Merge pull request #1423 from vector-im/feature/invalidate
Yet another cleanup PR
This commit is contained in:
commit
1b95d98ccd
@ -95,7 +95,6 @@ abstract class VectorBaseActivity : AppCompatActivity(), HasScreenInjector {
|
|||||||
protected val viewModelProvider
|
protected val viewModelProvider
|
||||||
get() = ViewModelProvider(this, viewModelFactory)
|
get() = ViewModelProvider(this, viewModelFactory)
|
||||||
|
|
||||||
// TODO Other Activity should use this also
|
|
||||||
protected fun <T : VectorViewEvents> VectorViewModel<*, *, T>.observeViewEvents(observer: (T) -> Unit) {
|
protected fun <T : VectorViewEvents> VectorViewModel<*, *, T>.observeViewEvents(observer: (T) -> Unit) {
|
||||||
viewEvents
|
viewEvents
|
||||||
.observe()
|
.observe()
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2020 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.riotx.core.utils
|
||||||
|
|
||||||
|
import im.vector.riotx.R
|
||||||
|
import im.vector.riotx.core.resources.ColorProvider
|
||||||
|
import org.billcarsonfr.jsonviewer.JSonViewerStyleProvider
|
||||||
|
|
||||||
|
fun createJSonViewerStyleProvider(colorProvider: ColorProvider): JSonViewerStyleProvider {
|
||||||
|
return JSonViewerStyleProvider(
|
||||||
|
keyColor = colorProvider.getColor(R.color.riotx_accent),
|
||||||
|
secondaryColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_secondary),
|
||||||
|
stringColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color),
|
||||||
|
baseColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_primary),
|
||||||
|
booleanColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color),
|
||||||
|
numberColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color)
|
||||||
|
)
|
||||||
|
}
|
@ -18,8 +18,6 @@ package im.vector.riotx.core.utils
|
|||||||
|
|
||||||
import androidx.annotation.ColorRes
|
import androidx.annotation.ColorRes
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.resources.ColorProvider
|
|
||||||
import org.billcarsonfr.jsonviewer.JSonViewerStyleProvider
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
@ColorRes
|
@ColorRes
|
||||||
@ -39,14 +37,3 @@ fun getColorFromUserId(userId: String?): Int {
|
|||||||
else -> R.color.riotx_username_1
|
else -> R.color.riotx_username_1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun jsonViewerStyler(colorProvider: ColorProvider): JSonViewerStyleProvider {
|
|
||||||
return JSonViewerStyleProvider(
|
|
||||||
keyColor = colorProvider.getColor(R.color.riotx_accent),
|
|
||||||
secondaryColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_secondary),
|
|
||||||
stringColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color),
|
|
||||||
baseColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_primary),
|
|
||||||
booleanColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color),
|
|
||||||
numberColor = colorProvider.getColorFromAttribute(R.attr.vctr_notice_text_color)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
@ -31,7 +31,6 @@ import im.vector.riotx.core.di.ScreenComponent
|
|||||||
import im.vector.riotx.core.error.ErrorFormatter
|
import im.vector.riotx.core.error.ErrorFormatter
|
||||||
import im.vector.riotx.core.extensions.commitTransaction
|
import im.vector.riotx.core.extensions.commitTransaction
|
||||||
import im.vector.riotx.core.platform.SimpleFragmentActivity
|
import im.vector.riotx.core.platform.SimpleFragmentActivity
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import kotlinx.android.parcel.Parcelize
|
import kotlinx.android.parcel.Parcelize
|
||||||
import kotlinx.android.synthetic.main.activity.*
|
import kotlinx.android.synthetic.main.activity.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -59,17 +58,9 @@ class SharedSecureStorageActivity : SimpleFragmentActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
toolbar.visibility = View.GONE
|
toolbar.visibility = View.GONE
|
||||||
|
|
||||||
viewModel.viewEvents
|
viewModel.observeViewEvents { observeViewEvents(it) }
|
||||||
.observe()
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe {
|
|
||||||
observeViewEvents(it)
|
|
||||||
}
|
|
||||||
.disposeOnDestroy()
|
|
||||||
|
|
||||||
viewModel.subscribe(this) {
|
viewModel.subscribe(this) { renderState(it) }
|
||||||
renderState(it)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
@ -22,22 +22,18 @@ import android.os.Bundle
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import com.airbnb.mvrx.activityViewModel
|
import com.airbnb.mvrx.activityViewModel
|
||||||
import com.airbnb.mvrx.withState
|
|
||||||
import com.jakewharton.rxbinding3.widget.editorActionEvents
|
import com.jakewharton.rxbinding3.widget.editorActionEvents
|
||||||
import com.jakewharton.rxbinding3.widget.textChanges
|
import com.jakewharton.rxbinding3.widget.textChanges
|
||||||
import im.vector.matrix.android.api.extensions.tryThis
|
import im.vector.matrix.android.api.extensions.tryThis
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.platform.VectorBaseFragment
|
import im.vector.riotx.core.platform.VectorBaseFragment
|
||||||
import im.vector.riotx.core.resources.ColorProvider
|
|
||||||
import im.vector.riotx.core.utils.startImportTextFromFileIntent
|
import im.vector.riotx.core.utils.startImportTextFromFileIntent
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import kotlinx.android.synthetic.main.fragment_ssss_access_from_key.*
|
import kotlinx.android.synthetic.main.fragment_ssss_access_from_key.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class SharedSecuredStorageKeyFragment @Inject constructor(
|
class SharedSecuredStorageKeyFragment @Inject constructor() : VectorBaseFragment() {
|
||||||
private val colorProvider: ColorProvider
|
|
||||||
) : VectorBaseFragment() {
|
|
||||||
|
|
||||||
override fun getLayoutResId() = R.layout.fragment_ssss_access_from_key
|
override fun getLayoutResId() = R.layout.fragment_ssss_access_from_key
|
||||||
|
|
||||||
@ -48,7 +44,7 @@ class SharedSecuredStorageKeyFragment @Inject constructor(
|
|||||||
ssss_restore_with_key_text.text = getString(R.string.enter_secret_storage_input_key)
|
ssss_restore_with_key_text.text = getString(R.string.enter_secret_storage_input_key)
|
||||||
|
|
||||||
ssss_key_enter_edittext.editorActionEvents()
|
ssss_key_enter_edittext.editorActionEvents()
|
||||||
.debounce(300, TimeUnit.MILLISECONDS)
|
.throttleFirst(300, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
@ -102,9 +98,6 @@ class SharedSecuredStorageKeyFragment @Inject constructor(
|
|||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun invalidate() = withState(sharedViewModel) { _ ->
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val IMPORT_FILE_REQ = 0
|
private const val IMPORT_FILE_REQ = 0
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ class SharedSecuredStoragePassphraseFragment @Inject constructor(
|
|||||||
.colorizeMatchingText(key, colorProvider.getColorFromAttribute(android.R.attr.textColorLink))
|
.colorizeMatchingText(key, colorProvider.getColorFromAttribute(android.R.attr.textColorLink))
|
||||||
|
|
||||||
ssss_passphrase_enter_edittext.editorActionEvents()
|
ssss_passphrase_enter_edittext.editorActionEvents()
|
||||||
.debounce(300, TimeUnit.MILLISECONDS)
|
.throttleFirst(300, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
|
@ -56,7 +56,7 @@ class BootstrapAccountPasswordFragment @Inject constructor(
|
|||||||
bootstrapAccountPasswordEditText.hint = getString(R.string.account_password)
|
bootstrapAccountPasswordEditText.hint = getString(R.string.account_password)
|
||||||
|
|
||||||
bootstrapAccountPasswordEditText.editorActionEvents()
|
bootstrapAccountPasswordEditText.editorActionEvents()
|
||||||
.debounce(300, TimeUnit.MILLISECONDS)
|
.throttleFirst(300, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
@ -98,8 +98,6 @@ class BootstrapAccountPasswordFragment @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun invalidate() = withState(sharedViewModel) { state ->
|
override fun invalidate() = withState(sharedViewModel) { state ->
|
||||||
super.invalidate()
|
|
||||||
|
|
||||||
if (state.step is BootstrapStep.AccountPassword) {
|
if (state.step is BootstrapStep.AccountPassword) {
|
||||||
val isPasswordVisible = state.step.isPasswordVisible
|
val isPasswordVisible = state.step.isPasswordVisible
|
||||||
bootstrapAccountPasswordEditText.showPassword(isPasswordVisible, updateCursor = false)
|
bootstrapAccountPasswordEditText.showPassword(isPasswordVisible, updateCursor = false)
|
||||||
|
@ -63,7 +63,7 @@ class BootstrapConfirmPassphraseFragment @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ssss_passphrase_enter_edittext.editorActionEvents()
|
ssss_passphrase_enter_edittext.editorActionEvents()
|
||||||
.debounce(300, TimeUnit.MILLISECONDS)
|
.throttleFirst(300, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
@ -96,13 +96,15 @@ class BootstrapConfirmPassphraseFragment @Inject constructor(
|
|||||||
return@withState
|
return@withState
|
||||||
}
|
}
|
||||||
val passphrase = ssss_passphrase_enter_edittext.text?.toString()
|
val passphrase = ssss_passphrase_enter_edittext.text?.toString()
|
||||||
if (passphrase.isNullOrBlank()) {
|
when {
|
||||||
ssss_passphrase_enter_til.error = getString(R.string.passphrase_empty_error_message)
|
passphrase.isNullOrBlank() ->
|
||||||
} else if (passphrase != state.passphrase) {
|
ssss_passphrase_enter_til.error = getString(R.string.passphrase_empty_error_message)
|
||||||
ssss_passphrase_enter_til.error = getString(R.string.passphrase_passphrase_does_not_match)
|
passphrase != state.passphrase ->
|
||||||
} else {
|
ssss_passphrase_enter_til.error = getString(R.string.passphrase_passphrase_does_not_match)
|
||||||
view?.hideKeyboard()
|
else -> {
|
||||||
sharedViewModel.handle(BootstrapActions.DoInitialize(passphrase))
|
view?.hideKeyboard()
|
||||||
|
sharedViewModel.handle(BootstrapActions.DoInitialize(passphrase))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,11 +53,11 @@ class BootstrapEnterPassphraseFragment @Inject constructor(
|
|||||||
|
|
||||||
ssss_passphrase_enter_edittext.hint = getString(R.string.passphrase_enter_passphrase)
|
ssss_passphrase_enter_edittext.hint = getString(R.string.passphrase_enter_passphrase)
|
||||||
withState(sharedViewModel) {
|
withState(sharedViewModel) {
|
||||||
// set initial value (usefull when coming back)
|
// set initial value (useful when coming back)
|
||||||
ssss_passphrase_enter_edittext.setText(it.passphrase ?: "")
|
ssss_passphrase_enter_edittext.setText(it.passphrase ?: "")
|
||||||
}
|
}
|
||||||
ssss_passphrase_enter_edittext.editorActionEvents()
|
ssss_passphrase_enter_edittext.editorActionEvents()
|
||||||
.debounce(300, TimeUnit.MILLISECONDS)
|
.throttleFirst(300, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
|
@ -57,11 +57,11 @@ class BootstrapMigrateBackupFragment @Inject constructor(
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
withState(sharedViewModel) {
|
withState(sharedViewModel) {
|
||||||
// set initial value (usefull when coming back)
|
// set initial value (useful when coming back)
|
||||||
bootstrapMigrateEditText.setText(it.passphrase ?: "")
|
bootstrapMigrateEditText.setText(it.passphrase ?: "")
|
||||||
}
|
}
|
||||||
bootstrapMigrateEditText.editorActionEvents()
|
bootstrapMigrateEditText.editorActionEvents()
|
||||||
.debounce(300, TimeUnit.MILLISECONDS)
|
.throttleFirst(300, TimeUnit.MILLISECONDS)
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe {
|
.subscribe {
|
||||||
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
if (it.actionId == EditorInfo.IME_ACTION_DONE) {
|
||||||
|
@ -22,6 +22,7 @@ import android.view.View
|
|||||||
import com.airbnb.mvrx.Incomplete
|
import com.airbnb.mvrx.Incomplete
|
||||||
import com.airbnb.mvrx.Success
|
import com.airbnb.mvrx.Success
|
||||||
import com.airbnb.mvrx.fragmentViewModel
|
import com.airbnb.mvrx.fragmentViewModel
|
||||||
|
import com.airbnb.mvrx.withState
|
||||||
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.extensions.cleanup
|
import im.vector.riotx.core.extensions.cleanup
|
||||||
@ -50,7 +51,6 @@ class GroupListFragment @Inject constructor(
|
|||||||
groupController.callback = this
|
groupController.callback = this
|
||||||
stateView.contentView = groupListView
|
stateView.contentView = groupListView
|
||||||
groupListView.configureWith(groupController)
|
groupListView.configureWith(groupController)
|
||||||
viewModel.subscribe { renderState(it) }
|
|
||||||
viewModel.observeViewEvents {
|
viewModel.observeViewEvents {
|
||||||
when (it) {
|
when (it) {
|
||||||
is GroupListViewEvents.OpenGroupSummary -> sharedActionViewModel.post(HomeActivitySharedAction.OpenGroup)
|
is GroupListViewEvents.OpenGroupSummary -> sharedActionViewModel.post(HomeActivitySharedAction.OpenGroup)
|
||||||
@ -64,7 +64,7 @@ class GroupListFragment @Inject constructor(
|
|||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderState(state: GroupListViewState) {
|
override fun invalidate() = withState(viewModel) { state ->
|
||||||
when (state.asyncGroups) {
|
when (state.asyncGroups) {
|
||||||
is Incomplete -> stateView.state = StateView.State.Loading
|
is Incomplete -> stateView.state = StateView.State.Loading
|
||||||
is Success -> stateView.state = StateView.State.Content
|
is Success -> stateView.state = StateView.State.Content
|
||||||
|
@ -19,6 +19,7 @@ package im.vector.riotx.features.home.room.breadcrumbs
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import com.airbnb.mvrx.fragmentViewModel
|
import com.airbnb.mvrx.fragmentViewModel
|
||||||
|
import com.airbnb.mvrx.withState
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.extensions.cleanup
|
import im.vector.riotx.core.extensions.cleanup
|
||||||
import im.vector.riotx.core.extensions.configureWith
|
import im.vector.riotx.core.extensions.configureWith
|
||||||
@ -42,8 +43,6 @@ class BreadcrumbsFragment @Inject constructor(
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setupRecyclerView()
|
setupRecyclerView()
|
||||||
sharedActionViewModel = activityViewModelProvider.get(RoomDetailSharedActionViewModel::class.java)
|
sharedActionViewModel = activityViewModelProvider.get(RoomDetailSharedActionViewModel::class.java)
|
||||||
|
|
||||||
breadcrumbsViewModel.subscribe { renderState(it) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
@ -57,8 +56,7 @@ class BreadcrumbsFragment @Inject constructor(
|
|||||||
breadcrumbsController.listener = this
|
breadcrumbsController.listener = this
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Use invalidate() ?
|
override fun invalidate() = withState(breadcrumbsViewModel) { state ->
|
||||||
private fun renderState(state: BreadcrumbsViewState) {
|
|
||||||
breadcrumbsController.update(state)
|
breadcrumbsController.update(state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,10 +110,10 @@ import im.vector.riotx.core.utils.allGranted
|
|||||||
import im.vector.riotx.core.utils.checkPermissions
|
import im.vector.riotx.core.utils.checkPermissions
|
||||||
import im.vector.riotx.core.utils.colorizeMatchingText
|
import im.vector.riotx.core.utils.colorizeMatchingText
|
||||||
import im.vector.riotx.core.utils.copyToClipboard
|
import im.vector.riotx.core.utils.copyToClipboard
|
||||||
|
import im.vector.riotx.core.utils.createJSonViewerStyleProvider
|
||||||
import im.vector.riotx.core.utils.createUIHandler
|
import im.vector.riotx.core.utils.createUIHandler
|
||||||
import im.vector.riotx.core.utils.getColorFromUserId
|
import im.vector.riotx.core.utils.getColorFromUserId
|
||||||
import im.vector.riotx.core.utils.isValidUrl
|
import im.vector.riotx.core.utils.isValidUrl
|
||||||
import im.vector.riotx.core.utils.jsonViewerStyler
|
|
||||||
import im.vector.riotx.core.utils.openUrlInExternalBrowser
|
import im.vector.riotx.core.utils.openUrlInExternalBrowser
|
||||||
import im.vector.riotx.core.utils.saveMedia
|
import im.vector.riotx.core.utils.saveMedia
|
||||||
import im.vector.riotx.core.utils.shareMedia
|
import im.vector.riotx.core.utils.shareMedia
|
||||||
@ -262,7 +262,6 @@ class RoomDetailFragment @Inject constructor(
|
|||||||
roomToolbarContentView.debouncedClicks {
|
roomToolbarContentView.debouncedClicks {
|
||||||
navigator.openRoomProfile(requireActivity(), roomDetailArgs.roomId)
|
navigator.openRoomProfile(requireActivity(), roomDetailArgs.roomId)
|
||||||
}
|
}
|
||||||
roomDetailViewModel.subscribe { renderState(it) }
|
|
||||||
|
|
||||||
sharedActionViewModel
|
sharedActionViewModel
|
||||||
.observe()
|
.observe()
|
||||||
@ -672,7 +671,7 @@ class RoomDetailFragment @Inject constructor(
|
|||||||
inviteView.callback = this
|
inviteView.callback = this
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderState(state: RoomDetailViewState) {
|
override fun invalidate() = withState(roomDetailViewModel) { state ->
|
||||||
renderRoomSummary(state)
|
renderRoomSummary(state)
|
||||||
val summary = state.asyncRoomSummary()
|
val summary = state.asyncRoomSummary()
|
||||||
val inviter = state.asyncInviter()
|
val inviter = state.asyncInviter()
|
||||||
@ -1208,14 +1207,14 @@ class RoomDetailFragment @Inject constructor(
|
|||||||
JSonViewerDialog.newInstance(
|
JSonViewerDialog.newInstance(
|
||||||
action.content,
|
action.content,
|
||||||
-1,
|
-1,
|
||||||
jsonViewerStyler(colorProvider)
|
createJSonViewerStyleProvider(colorProvider)
|
||||||
).show(childFragmentManager, "JSON_VIEWER")
|
).show(childFragmentManager, "JSON_VIEWER")
|
||||||
}
|
}
|
||||||
is EventSharedAction.ViewDecryptedSource -> {
|
is EventSharedAction.ViewDecryptedSource -> {
|
||||||
JSonViewerDialog.newInstance(
|
JSonViewerDialog.newInstance(
|
||||||
action.content,
|
action.content,
|
||||||
-1,
|
-1,
|
||||||
jsonViewerStyler(colorProvider)
|
createJSonViewerStyleProvider(colorProvider)
|
||||||
).show(childFragmentManager, "JSON_VIEWER")
|
).show(childFragmentManager, "JSON_VIEWER")
|
||||||
}
|
}
|
||||||
is EventSharedAction.QuickReact -> {
|
is EventSharedAction.QuickReact -> {
|
||||||
|
@ -32,6 +32,7 @@ import com.airbnb.mvrx.Incomplete
|
|||||||
import com.airbnb.mvrx.Success
|
import com.airbnb.mvrx.Success
|
||||||
import com.airbnb.mvrx.args
|
import com.airbnb.mvrx.args
|
||||||
import com.airbnb.mvrx.fragmentViewModel
|
import com.airbnb.mvrx.fragmentViewModel
|
||||||
|
import com.airbnb.mvrx.withState
|
||||||
import im.vector.matrix.android.api.failure.Failure
|
import im.vector.matrix.android.api.failure.Failure
|
||||||
import im.vector.matrix.android.api.session.room.model.Membership
|
import im.vector.matrix.android.api.session.room.model.Membership
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
@ -99,7 +100,6 @@ class RoomListFragment @Inject constructor(
|
|||||||
setupCreateRoomButton()
|
setupCreateRoomButton()
|
||||||
setupRecyclerView()
|
setupRecyclerView()
|
||||||
sharedActionViewModel = activityViewModelProvider.get(RoomListQuickActionsSharedActionViewModel::class.java)
|
sharedActionViewModel = activityViewModelProvider.get(RoomListQuickActionsSharedActionViewModel::class.java)
|
||||||
roomListViewModel.subscribe { renderState(it) }
|
|
||||||
roomListViewModel.observeViewEvents {
|
roomListViewModel.observeViewEvents {
|
||||||
when (it) {
|
when (it) {
|
||||||
is RoomListViewEvents.Loading -> showLoading(it.message)
|
is RoomListViewEvents.Loading -> showLoading(it.message)
|
||||||
@ -243,7 +243,7 @@ class RoomListFragment @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderState(state: RoomListViewState) {
|
override fun invalidate() = withState(roomListViewModel) { state ->
|
||||||
when (state.asyncFilteredRooms) {
|
when (state.asyncFilteredRooms) {
|
||||||
is Incomplete -> renderLoading()
|
is Incomplete -> renderLoading()
|
||||||
is Success -> renderSuccess(state)
|
is Success -> renderSuccess(state)
|
||||||
|
@ -45,7 +45,6 @@ import im.vector.riotx.features.home.HomeActivity
|
|||||||
import im.vector.riotx.features.login.terms.LoginTermsFragment
|
import im.vector.riotx.features.login.terms.LoginTermsFragment
|
||||||
import im.vector.riotx.features.login.terms.LoginTermsFragmentArgument
|
import im.vector.riotx.features.login.terms.LoginTermsFragmentArgument
|
||||||
import im.vector.riotx.features.login.terms.toLocalizedLoginTerms
|
import im.vector.riotx.features.login.terms.toLocalizedLoginTerms
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import kotlinx.android.synthetic.main.activity_login.*
|
import kotlinx.android.synthetic.main.activity_login.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ -103,13 +102,7 @@ open class LoginActivity : VectorBaseActivity(), ToolbarConfigurable {
|
|||||||
updateWithState(it)
|
updateWithState(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
loginViewModel.viewEvents
|
loginViewModel.observeViewEvents { handleLoginViewEvents(it) }
|
||||||
.observe()
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe {
|
|
||||||
handleLoginViewEvents(it)
|
|
||||||
}
|
|
||||||
.disposeOnDestroy()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun addFirstFragment() {
|
protected open fun addFirstFragment() {
|
||||||
|
@ -58,7 +58,6 @@ class DeviceListFragment @Inject constructor(
|
|||||||
|
|
||||||
override fun invalidate() = withState(viewModel) {
|
override fun invalidate() = withState(viewModel) {
|
||||||
epoxyController.setData(it)
|
epoxyController.setData(it)
|
||||||
super.invalidate()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDeviceSelected(device: CryptoDeviceInfo) {
|
override fun onDeviceSelected(device: CryptoDeviceInfo) {
|
||||||
|
@ -58,7 +58,6 @@ class DeviceTrustInfoActionFragment @Inject constructor(
|
|||||||
|
|
||||||
override fun invalidate() = withState(viewModel) {
|
override fun invalidate() = withState(viewModel) {
|
||||||
epoxyController.setData(it)
|
epoxyController.setData(it)
|
||||||
super.invalidate()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onVerifyManually(device: CryptoDeviceInfo) {
|
override fun onVerifyManually(device: CryptoDeviceInfo) {
|
||||||
|
@ -29,7 +29,7 @@ import im.vector.riotx.core.extensions.configureWith
|
|||||||
import im.vector.riotx.core.platform.VectorBaseActivity
|
import im.vector.riotx.core.platform.VectorBaseActivity
|
||||||
import im.vector.riotx.core.platform.VectorBaseFragment
|
import im.vector.riotx.core.platform.VectorBaseFragment
|
||||||
import im.vector.riotx.core.resources.ColorProvider
|
import im.vector.riotx.core.resources.ColorProvider
|
||||||
import im.vector.riotx.core.utils.jsonViewerStyler
|
import im.vector.riotx.core.utils.createJSonViewerStyleProvider
|
||||||
import kotlinx.android.synthetic.main.fragment_generic_recycler.*
|
import kotlinx.android.synthetic.main.fragment_generic_recycler.*
|
||||||
import org.billcarsonfr.jsonviewer.JSonViewerDialog
|
import org.billcarsonfr.jsonviewer.JSonViewerDialog
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -73,7 +73,7 @@ class AccountDataFragment @Inject constructor(
|
|||||||
JSonViewerDialog.newInstance(
|
JSonViewerDialog.newInstance(
|
||||||
jsonString,
|
jsonString,
|
||||||
-1, // open All
|
-1, // open All
|
||||||
jsonViewerStyler(colorProvider)
|
createJSonViewerStyleProvider(colorProvider)
|
||||||
).show(childFragmentManager, "JSON_VIEWER")
|
).show(childFragmentManager, "JSON_VIEWER")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ import im.vector.riotx.core.extensions.cleanup
|
|||||||
import im.vector.riotx.core.extensions.configureWith
|
import im.vector.riotx.core.extensions.configureWith
|
||||||
import im.vector.riotx.core.platform.VectorBaseFragment
|
import im.vector.riotx.core.platform.VectorBaseFragment
|
||||||
import im.vector.riotx.core.resources.ColorProvider
|
import im.vector.riotx.core.resources.ColorProvider
|
||||||
import im.vector.riotx.core.utils.jsonViewerStyler
|
import im.vector.riotx.core.utils.createJSonViewerStyleProvider
|
||||||
import kotlinx.android.synthetic.main.fragment_generic_recycler.*
|
import kotlinx.android.synthetic.main.fragment_generic_recycler.*
|
||||||
import org.billcarsonfr.jsonviewer.JSonViewerDialog
|
import org.billcarsonfr.jsonviewer.JSonViewerDialog
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -66,7 +66,7 @@ class GossipingEventsPaperTrailFragment @Inject constructor(
|
|||||||
JSonViewerDialog.newInstance(
|
JSonViewerDialog.newInstance(
|
||||||
it,
|
it,
|
||||||
-1,
|
-1,
|
||||||
jsonViewerStyler(colorProvider)
|
createJSonViewerStyleProvider(colorProvider)
|
||||||
).show(childFragmentManager, "JSON_VIEWER")
|
).show(childFragmentManager, "JSON_VIEWER")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ import im.vector.riotx.core.extensions.replaceFragment
|
|||||||
import im.vector.riotx.features.MainActivity
|
import im.vector.riotx.features.MainActivity
|
||||||
import im.vector.riotx.features.MainActivityArgs
|
import im.vector.riotx.features.MainActivityArgs
|
||||||
import im.vector.riotx.features.login.LoginActivity
|
import im.vector.riotx.features.login.LoginActivity
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
|
||||||
import kotlinx.android.synthetic.main.activity_login.*
|
import kotlinx.android.synthetic.main.activity_login.*
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -57,18 +56,11 @@ class SoftLogoutActivity : LoginActivity() {
|
|||||||
override fun initUiAndData() {
|
override fun initUiAndData() {
|
||||||
super.initUiAndData()
|
super.initUiAndData()
|
||||||
|
|
||||||
softLogoutViewModel
|
softLogoutViewModel.subscribe(this) {
|
||||||
.subscribe(this) {
|
updateWithState(it)
|
||||||
updateWithState(it)
|
}
|
||||||
}
|
|
||||||
|
|
||||||
softLogoutViewModel.viewEvents
|
softLogoutViewModel.observeViewEvents { handleSoftLogoutViewEvents(it) }
|
||||||
.observe()
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe {
|
|
||||||
handleSoftLogoutViewEvents(it)
|
|
||||||
}
|
|
||||||
.disposeOnDestroy()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleSoftLogoutViewEvents(softLogoutViewEvents: SoftLogoutViewEvents) {
|
private fun handleSoftLogoutViewEvents(softLogoutViewEvents: SoftLogoutViewEvents) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user