Use observeEvent when appropriate

This commit is contained in:
Benoit Marty 2019-06-12 13:19:52 +02:00
parent b47ef9220e
commit 9c654ba72c
6 changed files with 159 additions and 170 deletions

View File

@ -25,6 +25,7 @@ import androidx.lifecycle.ViewModelProviders
import im.vector.fragments.keysbackup.restore.KeysBackupRestoreFromPassphraseFragment import im.vector.fragments.keysbackup.restore.KeysBackupRestoreFromPassphraseFragment
import im.vector.fragments.keysbackup.restore.KeysBackupRestoreSharedViewModel import im.vector.fragments.keysbackup.restore.KeysBackupRestoreSharedViewModel
import im.vector.riotredesign.R import im.vector.riotredesign.R
import im.vector.riotredesign.core.extensions.observeEvent
import im.vector.riotredesign.core.platform.SimpleFragmentActivity import im.vector.riotredesign.core.platform.SimpleFragmentActivity


class KeysBackupRestoreActivity : SimpleFragmentActivity() { class KeysBackupRestoreActivity : SimpleFragmentActivity() {
@ -61,11 +62,10 @@ class KeysBackupRestoreActivity : SimpleFragmentActivity() {
} }
}) })


viewModel.keyVersionResultError.observe(this, Observer { uxStateEvent -> viewModel.keyVersionResultError.observeEvent(this) { message ->
uxStateEvent?.getContentIfNotHandled()?.let {
AlertDialog.Builder(this) AlertDialog.Builder(this)
.setTitle(R.string.unknown_error) .setTitle(R.string.unknown_error)
.setMessage(it) .setMessage(message)
.setCancelable(false) .setCancelable(false)
.setPositiveButton(R.string.ok) { _, _ -> .setPositiveButton(R.string.ok) { _, _ ->
//nop //nop
@ -73,15 +73,14 @@ class KeysBackupRestoreActivity : SimpleFragmentActivity() {
} }
.show() .show()
} }
})


if (viewModel.keyVersionResult.value == null) { if (viewModel.keyVersionResult.value == null) {
//We need to fetch from API //We need to fetch from API
viewModel.getLatestVersion(this) viewModel.getLatestVersion(this)
} }


viewModel.navigateEvent.observe(this, Observer { uxStateEvent -> viewModel.navigateEvent.observeEvent(this) { uxStateEvent ->
when (uxStateEvent?.getContentIfNotHandled()) { when (uxStateEvent) {
KeysBackupRestoreSharedViewModel.NAVIGATE_TO_RECOVER_WITH_KEY -> { KeysBackupRestoreSharedViewModel.NAVIGATE_TO_RECOVER_WITH_KEY -> {
supportFragmentManager.beginTransaction() supportFragmentManager.beginTransaction()
.replace(R.id.container, KeysBackupRestoreFromKeyFragment.newInstance()) .replace(R.id.container, KeysBackupRestoreFromKeyFragment.newInstance())
@ -95,19 +94,16 @@ class KeysBackupRestoreActivity : SimpleFragmentActivity() {
.commit() .commit()
} }
} }
}) }


viewModel.loadingEvent.observe(this, Observer { viewModel.loadingEvent.observe(this, Observer {
updateWaitingView(it) updateWaitingView(it)
}) })


viewModel.importRoomKeysFinishWithResult.observe(this, Observer { viewModel.importRoomKeysFinishWithResult.observeEvent(this) {
it?.getContentIfNotHandled()?.let {
//set data? //set data?
setResult(Activity.RESULT_OK) setResult(Activity.RESULT_OK)
finish() finish()
} }
})
} }

} }

View File

@ -25,6 +25,7 @@ import androidx.lifecycle.ViewModelProviders
import im.vector.fragments.keysbackup.setup.KeysBackupSetupSharedViewModel import im.vector.fragments.keysbackup.setup.KeysBackupSetupSharedViewModel
import im.vector.riotredesign.R import im.vector.riotredesign.R
import im.vector.riotredesign.core.dialogs.ExportKeysDialog import im.vector.riotredesign.core.dialogs.ExportKeysDialog
import im.vector.riotredesign.core.extensions.observeEvent
import im.vector.riotredesign.core.platform.SimpleFragmentActivity import im.vector.riotredesign.core.platform.SimpleFragmentActivity


class KeysBackupSetupActivity : SimpleFragmentActivity() { class KeysBackupSetupActivity : SimpleFragmentActivity() {
@ -61,8 +62,8 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() {
} }
}) })


viewModel.navigateEvent.observe(this, Observer { uxStateEvent -> viewModel.navigateEvent.observeEvent(this) { uxStateEvent ->
when (uxStateEvent?.getContentIfNotHandled()) { when (uxStateEvent) {
KeysBackupSetupSharedViewModel.NAVIGATE_TO_STEP_2 -> { KeysBackupSetupSharedViewModel.NAVIGATE_TO_STEP_2 -> {
supportFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE) supportFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
supportFragmentManager.beginTransaction() supportFragmentManager.beginTransaction()
@ -87,7 +88,7 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() {
exportKeysManually() exportKeysManually()
} }
} }
}) }




viewModel.prepareRecoverFailError.observe(this, Observer { error -> viewModel.prepareRecoverFailError.observe(this, Observer { error ->

View File

@ -22,11 +22,12 @@ import android.view.MenuItem
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders import androidx.lifecycle.ViewModelProviders
import im.vector.matrix.android.api.session.crypto.sas.CancelCode
import im.vector.matrix.android.api.session.crypto.sas.IncomingSasVerificationTransaction import im.vector.matrix.android.api.session.crypto.sas.IncomingSasVerificationTransaction
import im.vector.matrix.android.api.session.crypto.sas.OutgoingSasVerificationRequest import im.vector.matrix.android.api.session.crypto.sas.OutgoingSasVerificationRequest
import im.vector.matrix.android.api.session.crypto.sas.CancelCode
import im.vector.matrix.android.api.session.crypto.sas.SasVerificationTxState import im.vector.matrix.android.api.session.crypto.sas.SasVerificationTxState
import im.vector.riotredesign.R import im.vector.riotredesign.R
import im.vector.riotredesign.core.extensions.observeEvent
import im.vector.riotredesign.core.platform.SimpleFragmentActivity import im.vector.riotredesign.core.platform.SimpleFragmentActivity
import im.vector.riotredesign.core.platform.WaitingViewData import im.vector.riotredesign.core.platform.WaitingViewData


@ -159,8 +160,8 @@ class SASVerificationActivity : SimpleFragmentActivity() {
} }
} }


viewModel.navigateEvent.observe(this, Observer { uxStateEvent -> viewModel.navigateEvent.observeEvent(this) { uxStateEvent ->
when (uxStateEvent?.getContentIfNotHandled()) { when (uxStateEvent) {
SasVerificationViewModel.NAVIGATE_FINISH -> { SasVerificationViewModel.NAVIGATE_FINISH -> {
finish() finish()
} }
@ -216,7 +217,7 @@ class SASVerificationActivity : SimpleFragmentActivity() {
} }
} }
} }
}) }


viewModel.loadingLiveEvent.observe(this, Observer { viewModel.loadingLiveEvent.observe(this, Observer {
if (it == null) { if (it == null) {

View File

@ -36,7 +36,6 @@ import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -192,15 +191,13 @@ class RoomDetailFragment :
textComposerViewModel.subscribe { renderTextComposerState(it) } textComposerViewModel.subscribe { renderTextComposerState(it) }
roomDetailViewModel.sendMessageResultLiveData.observeEvent(this) { renderSendMessageResult(it) } roomDetailViewModel.sendMessageResultLiveData.observeEvent(this) { renderSendMessageResult(it) }


roomDetailViewModel.nonBlockingPopAlert.observe(this, Observer { liveEvent -> roomDetailViewModel.nonBlockingPopAlert.observeEvent(this) { pair ->
liveEvent.getContentIfNotHandled()?.let { val message = requireContext().getString(pair.first, *pair.second.toTypedArray())
val message = requireContext().getString(it.first, *it.second.toTypedArray())
showSnackWithMessage(message, Snackbar.LENGTH_LONG) showSnackWithMessage(message, Snackbar.LENGTH_LONG)
} }
}) actionViewModel.actionCommandEvent.observeEvent(this) {
actionViewModel.actionCommandEvent.observe(this, Observer {
handleActions(it) handleActions(it)
}) }


roomDetailViewModel.selectSubscribe( roomDetailViewModel.selectSubscribe(
RoomDetailViewState::sendMode, RoomDetailViewState::sendMode,
@ -614,9 +611,7 @@ class RoomDetailFragment :
textComposerViewModel.process(TextComposerActions.QueryUsers(query)) textComposerViewModel.process(TextComposerActions.QueryUsers(query))
} }


private fun handleActions(it: LiveEvent<ActionsHandler.ActionData>?) { private fun handleActions(actionData: ActionsHandler.ActionData) {
it?.getContentIfNotHandled()?.let { actionData ->

when (actionData.actionId) { when (actionData.actionId) {
MessageMenuViewModel.ACTION_ADD_REACTION -> { MessageMenuViewModel.ACTION_ADD_REACTION -> {
val eventId = actionData.data?.toString() ?: return val eventId = actionData.data?.toString() ?: return
@ -711,7 +706,6 @@ class RoomDetailFragment :
} }
} }
} }
}


//utils //utils
/** /**

View File

@ -30,6 +30,7 @@ import androidx.lifecycle.ViewModelProviders
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import im.vector.riotredesign.EmojiCompatFontProvider import im.vector.riotredesign.EmojiCompatFontProvider
import im.vector.riotredesign.R import im.vector.riotredesign.R
import im.vector.riotredesign.core.extensions.observeEvent
import im.vector.riotredesign.core.platform.VectorBaseActivity import im.vector.riotredesign.core.platform.VectorBaseActivity
import kotlinx.android.synthetic.main.activity_emoji_reaction_picker.* import kotlinx.android.synthetic.main.activity_emoji_reaction_picker.*
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@ -102,8 +103,7 @@ class EmojiReactionPickerActivity : VectorBaseActivity(), EmojiCompatFontProvide
} }
}) })


viewModel.navigateEvent.observe(this, Observer { viewModel.navigateEvent.observeEvent(this) {
it.getContentIfNotHandled()?.let {
if (it == EmojiChooserViewModel.NAVIGATE_FINISH) { if (it == EmojiChooserViewModel.NAVIGATE_FINISH) {
//finish with result //finish with result
val dataResult = Intent() val dataResult = Intent()
@ -113,7 +113,6 @@ class EmojiReactionPickerActivity : VectorBaseActivity(), EmojiCompatFontProvide
finish() finish()
} }
} }
})
} }


override fun compatibilityFontUpdate(typeface: Typeface?) { override fun compatibilityFontUpdate(typeface: Typeface?) {

View File

@ -19,7 +19,6 @@ package im.vector.riotredesign.features.roomdirectory
import android.os.Bundle import android.os.Bundle
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.airbnb.epoxy.EpoxyVisibilityTracker import com.airbnb.epoxy.EpoxyVisibilityTracker
@ -30,6 +29,7 @@ import com.jakewharton.rxbinding2.widget.RxTextView
import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom
import im.vector.riotredesign.R import im.vector.riotredesign.R
import im.vector.riotredesign.core.error.ErrorFormatter import im.vector.riotredesign.core.error.ErrorFormatter
import im.vector.riotredesign.core.extensions.observeEvent
import im.vector.riotredesign.core.platform.VectorBaseFragment import im.vector.riotredesign.core.platform.VectorBaseFragment
import im.vector.riotredesign.features.themes.ThemeUtils import im.vector.riotredesign.features.themes.ThemeUtils
import io.reactivex.rxkotlin.subscribeBy import io.reactivex.rxkotlin.subscribeBy
@ -79,12 +79,10 @@ class PublicRoomsFragment : VectorBaseFragment(), PublicRoomsController.Callback
navigationViewModel.goTo(RoomDirectoryActivity.Navigation.CreateRoom) navigationViewModel.goTo(RoomDirectoryActivity.Navigation.CreateRoom)
} }


viewModel.joinRoomErrorLiveData.observe(this, Observer { viewModel.joinRoomErrorLiveData.observeEvent(this) { throwable ->
it.getContentIfNotHandled()?.let { throwable ->
Snackbar.make(publicRoomsCoordinator, errorFormatter.toHumanReadable(throwable), Snackbar.LENGTH_SHORT) Snackbar.make(publicRoomsCoordinator, errorFormatter.toHumanReadable(throwable), Snackbar.LENGTH_SHORT)
.show() .show()
} }
})
} }


override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {