diff --git a/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt b/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt index 1a7a79ed8c..78266cf5ee 100644 --- a/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt +++ b/vector/src/main/java/im/vector/app/core/preference/PushRulePreference.kt @@ -83,6 +83,7 @@ class PushRulePreference : VectorPreference { NotificationIndex.NOISY -> { radioGroup?.check(R.id.bingPreferenceRadioBingRuleNoisy) } + null -> Unit } radioGroup?.setOnCheckedChangeListener { _, checkedId -> diff --git a/vector/src/main/java/im/vector/app/core/ui/views/KeysBackupBanner.kt b/vector/src/main/java/im/vector/app/core/ui/views/KeysBackupBanner.kt index 94c1ab6576..58a5666e94 100755 --- a/vector/src/main/java/im/vector/app/core/ui/views/KeysBackupBanner.kt +++ b/vector/src/main/java/im/vector/app/core/ui/views/KeysBackupBanner.kt @@ -77,13 +77,10 @@ class KeysBackupBanner @JvmOverloads constructor( override fun onClick(v: View?) { when (state) { - is State.Setup -> { - delegate?.setupKeysBackup() - } + is State.Setup -> delegate?.setupKeysBackup() is State.Update, - is State.Recover -> { - delegate?.recoverKeysBackup() - } + is State.Recover -> delegate?.recoverKeysBackup() + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt b/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt index 301f8afdc9..82675e8c11 100644 --- a/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt +++ b/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt @@ -49,6 +49,7 @@ class PresenceStateImageView @JvmOverloads constructor( setImageResource(R.drawable.ic_presence_offline) contentDescription = context.getString(R.string.a11y_presence_offline) } + null -> Unit } } } diff --git a/vector/src/main/java/im/vector/app/core/ui/views/ShieldImageView.kt b/vector/src/main/java/im/vector/app/core/ui/views/ShieldImageView.kt index ac0b4408b2..713c177099 100644 --- a/vector/src/main/java/im/vector/app/core/ui/views/ShieldImageView.kt +++ b/vector/src/main/java/im/vector/app/core/ui/views/ShieldImageView.kt @@ -40,21 +40,21 @@ class ShieldImageView @JvmOverloads constructor( isVisible = roomEncryptionTrustLevel != null when (roomEncryptionTrustLevel) { - RoomEncryptionTrustLevel.Default -> { + RoomEncryptionTrustLevel.Default -> { contentDescription = context.getString(R.string.a11y_trust_level_default) setImageResource( if (borderLess) R.drawable.ic_shield_black_no_border else R.drawable.ic_shield_black ) } - RoomEncryptionTrustLevel.Warning -> { + RoomEncryptionTrustLevel.Warning -> { contentDescription = context.getString(R.string.a11y_trust_level_warning) setImageResource( if (borderLess) R.drawable.ic_shield_warning_no_border else R.drawable.ic_shield_warning ) } - RoomEncryptionTrustLevel.Trusted -> { + RoomEncryptionTrustLevel.Trusted -> { contentDescription = context.getString(R.string.a11y_trust_level_trusted) setImageResource( if (borderLess) R.drawable.ic_shield_trusted_no_border @@ -65,6 +65,7 @@ class ShieldImageView @JvmOverloads constructor( contentDescription = context.getString(R.string.a11y_trust_level_trusted) setImageResource(R.drawable.ic_warning_badge) } + null -> Unit } } } @@ -72,9 +73,9 @@ class ShieldImageView @JvmOverloads constructor( @DrawableRes fun RoomEncryptionTrustLevel.toDrawableRes(): Int { return when (this) { - RoomEncryptionTrustLevel.Default -> R.drawable.ic_shield_black - RoomEncryptionTrustLevel.Warning -> R.drawable.ic_shield_warning - RoomEncryptionTrustLevel.Trusted -> R.drawable.ic_shield_trusted + RoomEncryptionTrustLevel.Default -> R.drawable.ic_shield_black + RoomEncryptionTrustLevel.Warning -> R.drawable.ic_shield_warning + RoomEncryptionTrustLevel.Trusted -> R.drawable.ic_shield_trusted RoomEncryptionTrustLevel.E2EWithUnsupportedAlgorithm -> R.drawable.ic_warning_badge } } diff --git a/vector/src/main/java/im/vector/app/features/call/CallControlsView.kt b/vector/src/main/java/im/vector/app/features/call/CallControlsView.kt index 8d30c4d5c5..b3fc36e5bc 100644 --- a/vector/src/main/java/im/vector/app/features/call/CallControlsView.kt +++ b/vector/src/main/java/im/vector/app/features/call/CallControlsView.kt @@ -111,6 +111,7 @@ class CallControlsView @JvmOverloads constructor( views.ringingControls.isVisible = false views.connectedControls.isVisible = false } + null -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt index 23c7b79914..e9d16ee710 100644 --- a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt @@ -525,8 +525,7 @@ class VectorCallActivity : VectorBaseActivity(), CallContro navigator.openCallTransfer(this, callTransferActivityResultLauncher, callId) } is VectorCallViewEvents.FailToTransfer -> showSnackbar(getString(R.string.call_transfer_failure)) - null -> { - } + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt index 9df4f52d0f..111b872a15 100644 --- a/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt +++ b/vector/src/main/java/im/vector/app/features/createdirect/CreateDirectRoomActivity.kt @@ -28,6 +28,7 @@ import com.airbnb.mvrx.Async import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.viewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint @@ -167,6 +168,7 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() { private fun renderCreateAndInviteState(state: Async) { when (state) { + Uninitialized, is Loading -> renderCreationLoading() is Success -> renderCreationSuccess(state()) is Fail -> renderCreationFailure(state.error) diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/settings/KeysBackupSettingsRecyclerViewController.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/settings/KeysBackupSettingsRecyclerViewController.kt index 577572ef14..3c922e6309 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/settings/KeysBackupSettingsRecyclerViewController.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/settings/KeysBackupSettingsRecyclerViewController.kt @@ -140,6 +140,7 @@ class KeysBackupSettingsRecyclerViewController @Inject constructor( isBackupAlreadySetup = true } + null -> Unit } if (isBackupAlreadySetup) { diff --git a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt index b317ac95ad..0a105064d5 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt @@ -116,12 +116,13 @@ class SharedSecureStorageActivity : is SharedSecureStorageViewEvent.FinishSuccess -> { val dataResult = Intent() dataResult.putExtra(EXTRA_DATA_RESULT, it.cypherResult) - setResult(Activity.RESULT_OK, dataResult) + setResult(RESULT_OK, dataResult) finish() } is SharedSecureStorageViewEvent.ShowResetBottomSheet -> { navigator.open4SSetup(this, SetupMode.HARD_RESET) } + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStorageKeyFragment.kt b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStorageKeyFragment.kt index 8e7f11f0f5..fd660367ae 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStorageKeyFragment.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStorageKeyFragment.kt @@ -77,6 +77,7 @@ class SharedSecuredStorageKeyFragment @Inject constructor() : VectorBaseFragment is SharedSecureStorageViewEvent.KeyInlineError -> { views.ssssKeyEnterTil.error = it.message } + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStoragePassphraseFragment.kt b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStoragePassphraseFragment.kt index 70c1003773..41507f2722 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStoragePassphraseFragment.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecuredStoragePassphraseFragment.kt @@ -86,6 +86,7 @@ class SharedSecuredStoragePassphraseFragment @Inject constructor( is SharedSecureStorageViewEvent.InlineError -> { views.ssssPassphraseEnterTil.error = it.message } + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt index 65e3fbabba..8255e42d74 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt @@ -252,6 +252,7 @@ class VerificationBottomSheet : VectorBaseBottomSheetDialogFragment Unit } return@withState diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/emoji/VerificationEmojiCodeViewModel.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/emoji/VerificationEmojiCodeViewModel.kt index 6f213adb7e..aec28f898e 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/emoji/VerificationEmojiCodeViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/emoji/VerificationEmojiCodeViewModel.kt @@ -139,6 +139,7 @@ class VerificationEmojiCodeViewModel @AssistedInject constructor( ) } } + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/request/VerificationRequestController.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/request/VerificationRequestController.kt index 90997830a0..781677433b 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/request/VerificationRequestController.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/request/VerificationRequestController.kt @@ -18,6 +18,7 @@ package im.vector.app.features.crypto.verification.request import androidx.core.text.toSpannable import com.airbnb.epoxy.EpoxyController +import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success import com.airbnb.mvrx.Uninitialized @@ -153,6 +154,7 @@ class VerificationRequestController @Inject constructor( } } } + is Fail -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt b/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt index 551b72dd82..b338f367e3 100644 --- a/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt +++ b/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsController.kt @@ -50,6 +50,7 @@ class DiscoverySettingsController @Inject constructor( override fun buildModels(data: DiscoverySettingsState) { when (data.identityServer) { + Uninitialized, is Loading -> { loadingItem { id("identityServerLoading") @@ -209,18 +210,19 @@ class DiscoverySettingsController @Inject constructor( titleResId(R.string.settings_discovery_emails_title) } when (emails) { - is Incomplete -> { + Uninitialized, + is Loading -> { loadingItem { id("emailsLoading") } } - is Fail -> { + is Fail -> { settingsInfoItem { id("emailsError") helperText(emails.error.message) } } - is Success -> { + is Success -> { if (emails().isEmpty()) { settingsInfoItem { id("emailsEmpty") @@ -277,18 +279,19 @@ class DiscoverySettingsController @Inject constructor( } when (msisdns) { - is Incomplete -> { + Uninitialized, + is Loading -> { loadingItem { id("msisdnLoading") } } - is Fail -> { + is Fail -> { settingsInfoItem { id("msisdnListError") helperText(msisdns.error.message) } } - is Success -> { + is Success -> { if (msisdns().isEmpty()) { settingsInfoItem { id("no_msisdn") @@ -353,6 +356,7 @@ class DiscoverySettingsController @Inject constructor( colorProvider(host.colorProvider) stringProvider(host.stringProvider) when (pidInfo.isShared) { + Uninitialized, is Loading -> { buttonIndeterminate(true) } @@ -384,6 +388,7 @@ class DiscoverySettingsController @Inject constructor( else -> iconMode(IconMode.NONE) } } + null -> Unit } } } diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index e812942996..01d91f3edc 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -273,6 +273,7 @@ class HomeDetailViewModel @AssistedInject constructor( ) } } + null -> Unit } } .launchIn(viewModelScope) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index f462128c6b..7137cbc4cf 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -1782,6 +1782,7 @@ class TimelineFragment @Inject constructor( transactionId = data.transactionId, ).show(parentFragmentManager, "REQ") } + else -> Unit } } @@ -2236,6 +2237,8 @@ class TimelineFragment @Inject constructor( is EventSharedAction.EndPoll -> { askConfirmationToEndPoll(action.eventId) } + is EventSharedAction.ReportContent -> Unit /* Not clickable */ + EventSharedAction.Separator -> Unit /* Not clickable */ } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/voice/VoiceMessageRecorderView.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/voice/VoiceMessageRecorderView.kt index 9a643796a9..ba39f40daf 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/voice/VoiceMessageRecorderView.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/voice/VoiceMessageRecorderView.kt @@ -95,9 +95,10 @@ class VoiceMessageRecorderView @JvmOverloads constructor( override fun onDeleteVoiceMessage() = callback.onDeleteVoiceMessage() override fun onWaveformClicked() { when (lastKnownState) { - RecordingUiState.Draft -> callback.onVoicePlaybackButtonClicked() + RecordingUiState.Draft -> callback.onVoicePlaybackButtonClicked() is RecordingUiState.Recording, is RecordingUiState.Locked -> callback.onRecordingWaveformClicked() + else -> Unit } } @@ -119,7 +120,7 @@ class VoiceMessageRecorderView @JvmOverloads constructor( fun render(recordingState: RecordingUiState) { if (lastKnownState == recordingState) return when (recordingState) { - RecordingUiState.Idle -> { + RecordingUiState.Idle -> { reset() } is RecordingUiState.Recording -> { @@ -137,7 +138,7 @@ class VoiceMessageRecorderView @JvmOverloads constructor( voiceMessageViews.showRecordingLockedViews(recordingState) }, 500) } - RecordingUiState.Draft -> { + RecordingUiState.Draft -> { stopRecordingTicker() voiceMessageViews.showDraftViews() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt index 62c142238e..fbcf29d863 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt @@ -26,6 +26,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState @@ -88,6 +89,7 @@ class SearchFragment @Inject constructor( override fun invalidate() = withState(searchViewModel) { state -> if (state.searchResult.isNullOrEmpty()) { when (state.asyncSearchRequest) { + Uninitialized, is Loading -> { views.stateView.state = StateView.State.Loading } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/edithistory/ViewEditHistoryEpoxyController.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/edithistory/ViewEditHistoryEpoxyController.kt index 1dad6cc4a7..9f05547300 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/edithistory/ViewEditHistoryEpoxyController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/edithistory/ViewEditHistoryEpoxyController.kt @@ -18,8 +18,9 @@ package im.vector.app.features.home.room.detail.timeline.edithistory import android.text.Spannable import com.airbnb.epoxy.TypedEpoxyController import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.core.date.DateFormatKind import im.vector.app.core.date.VectorDateFormatter @@ -54,18 +55,19 @@ class ViewEditHistoryEpoxyController @Inject constructor( override fun buildModels(state: ViewEditHistoryViewState) { val host = this when (state.editList) { - is Incomplete -> { + Uninitialized, + is Loading -> { genericLoaderItem { id("Spinner") } } - is Fail -> { + is Fail -> { genericFooterItem { id("failure") text(host.stringProvider.getString(R.string.unknown_error).toEpoxyCharSequence()) } } - is Success -> { + is Success -> { state.editList()?.let { renderEvents(it, state.isOriginalAReply) } } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt index e9f728d976..98be75027e 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt @@ -96,9 +96,10 @@ abstract class MessageVoiceItem : AbsMessageItem() { voiceMessagePlaybackTracker.track(attributes.informationData.eventId, object : VoiceMessagePlaybackTracker.Listener { override fun onUpdate(state: VoiceMessagePlaybackTracker.Listener.State) { when (state) { - is VoiceMessagePlaybackTracker.Listener.State.Idle -> renderIdleState(holder) - is VoiceMessagePlaybackTracker.Listener.State.Playing -> renderPlayingState(holder, state) - is VoiceMessagePlaybackTracker.Listener.State.Paused -> renderPausedState(holder, state) + is VoiceMessagePlaybackTracker.Listener.State.Idle -> renderIdleState(holder) + is VoiceMessagePlaybackTracker.Listener.State.Playing -> renderPlayingState(holder, state) + is VoiceMessagePlaybackTracker.Listener.State.Paused -> renderPausedState(holder, state) + is VoiceMessagePlaybackTracker.Listener.State.Recording -> Unit } } }) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsEpoxyController.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsEpoxyController.kt index 10af3792d5..86e5c529ee 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsEpoxyController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/reactions/ViewReactionsEpoxyController.kt @@ -18,8 +18,9 @@ package im.vector.app.features.home.room.detail.timeline.reactions import com.airbnb.epoxy.TypedEpoxyController import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.EmojiSpanify import im.vector.app.R import im.vector.app.core.resources.StringProvider @@ -41,18 +42,19 @@ class ViewReactionsEpoxyController @Inject constructor( override fun buildModels(state: DisplayReactionsViewState) { val host = this when (state.mapReactionKeyToMemberList) { - is Incomplete -> { + Uninitialized, + is Loading -> { genericLoaderItem { id("Spinner") } } - is Fail -> { + is Fail -> { genericFooterItem { id("failure") text(host.stringProvider.getString(R.string.unknown_error).toEpoxyCharSequence()) } } - is Success -> { + is Success -> { state.mapReactionKeyToMemberList()?.forEach { reactionInfo -> reactionInfoSimpleItem { id(reactionInfo.eventId) diff --git a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt index da61d95997..61d32eadd8 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt @@ -29,6 +29,7 @@ import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.core.extensions.exhaustive import im.vector.app.core.extensions.hideKeyboard @@ -269,6 +270,7 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment { // Ensure password is hidden views.passwordField.hidePassword() @@ -300,7 +302,7 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment Unit + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordFragment.kt index d121245532..1d32944f9f 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordFragment.kt @@ -23,7 +23,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading -import com.airbnb.mvrx.Success import com.google.android.material.dialog.MaterialAlertDialogBuilder import im.vector.app.R import im.vector.app.core.extensions.hideKeyboard @@ -129,7 +128,7 @@ class LoginResetPasswordFragment @Inject constructor() : AbstractLoginFragment { views.resetPasswordEmailTil.error = errorFormatter.toHumanReadable(state.asyncResetPassword.error) } - is Success -> Unit + else -> Unit } } } diff --git a/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordMailConfirmationFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordMailConfirmationFragment.kt index 5f376700f8..232e7ab622 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordMailConfirmationFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginResetPasswordMailConfirmationFragment.kt @@ -21,7 +21,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Success import com.google.android.material.dialog.MaterialAlertDialogBuilder import im.vector.app.R import im.vector.app.databinding.FragmentLoginResetPasswordMailConfirmationBinding @@ -59,7 +58,7 @@ class LoginResetPasswordMailConfirmationFragment @Inject constructor() : Abstrac setupUi(state) when (state.asyncResetMailConfirmed) { - is Fail -> { + is Fail -> { // Link in email not yet clicked ? val message = if (state.asyncResetMailConfirmed.error.is401()) { getString(R.string.auth_reset_password_error_unauthorized) @@ -73,7 +72,7 @@ class LoginResetPasswordMailConfirmationFragment @Inject constructor() : Abstrac .setPositiveButton(R.string.ok, null) .show() } - is Success -> Unit + else -> Unit } } } diff --git a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt index bfa924c155..4eba31994b 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt @@ -173,6 +173,7 @@ class LoginViewModel @AssistedInject constructor( .withAllowedFingerPrints(listOf(action.fingerprint)) .build() ) + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt index b73988126b..e2831e7d2d 100644 --- a/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt +++ b/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt @@ -18,7 +18,6 @@ package im.vector.app.features.login2 import android.content.Context import android.net.Uri -import androidx.lifecycle.viewModelScope import com.airbnb.mvrx.Loading import com.airbnb.mvrx.MavericksViewModelFactory import dagger.assisted.Assisted @@ -172,6 +171,7 @@ class LoginViewModel2 @AssistedInject constructor( handleSetUserPassword(finalLastAction) is LoginAction2.LoginWith -> handleLoginWith(finalLastAction) + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt b/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt index 63e0398fc1..61dcd48779 100644 --- a/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt @@ -65,18 +65,17 @@ class MatrixToBottomSheet : override fun invalidate() = withState(viewModel) { state -> super.invalidate() when (state.linkType) { - is PermalinkData.RoomLink -> { + is PermalinkData.RoomLink -> { views.matrixToCardContentLoading.isVisible = state.roomPeekResult is Incomplete showFragment(MatrixToRoomSpaceFragment::class, Bundle()) } - is PermalinkData.UserLink -> { + is PermalinkData.UserLink -> { views.matrixToCardContentLoading.isVisible = state.matrixItem is Incomplete showFragment(MatrixToUserFragment::class, Bundle()) } - is PermalinkData.GroupLink -> { - } - is PermalinkData.FallbackLink -> { - } + is PermalinkData.GroupLink -> Unit + is PermalinkData.FallbackLink -> Unit + is PermalinkData.RoomEmailInviteLink -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheetViewModel.kt b/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheetViewModel.kt index e741f6fb39..76391c6dec 100644 --- a/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheetViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheetViewModel.kt @@ -49,8 +49,8 @@ class MatrixToBottomSheetViewModel @AssistedInject constructor( private val session: Session, private val stringProvider: StringProvider, private val directRoomHelper: DirectRoomHelper, - private val errorFormatter: ErrorFormatter) : - VectorViewModel(initialState) { + private val errorFormatter: ErrorFormatter +) : VectorViewModel(initialState) { @AssistedFactory interface Factory : MavericksAssistedViewModelFactory { @@ -61,22 +61,23 @@ class MatrixToBottomSheetViewModel @AssistedInject constructor( init { when (initialState.linkType) { - is PermalinkData.RoomLink -> { + is PermalinkData.RoomLink -> { setState { copy(roomPeekResult = Loading()) } } - is PermalinkData.UserLink -> { + is PermalinkData.UserLink -> { setState { copy(matrixItem = Loading()) } } - is PermalinkData.GroupLink -> { + is PermalinkData.GroupLink -> { // Not yet supported } - is PermalinkData.FallbackLink -> { + is PermalinkData.FallbackLink -> { // Not yet supported } + is PermalinkData.RoomEmailInviteLink -> Unit } viewModelScope.launch(Dispatchers.IO) { resolveLink(initialState) diff --git a/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt b/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt index cc02687d93..4c3ce80339 100644 --- a/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt +++ b/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt @@ -320,6 +320,7 @@ class DefaultNavigator @Inject constructor( } } } + null -> Unit } } @@ -376,6 +377,7 @@ class DefaultNavigator @Inject constructor( context.startActivity(intent) } } + null -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationRenderer.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationRenderer.kt index 4078bb0b5c..e0e21a39a7 100644 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationRenderer.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationRenderer.kt @@ -47,11 +47,9 @@ class NotificationRenderer @Inject constructor(private val notificationDisplayer ) // Remove summary first to avoid briefly displaying it after dismissing the last notification - when (summaryNotification) { - SummaryNotification.Removed -> { - Timber.d("Removing summary notification") - notificationDisplayer.cancelNotificationMessage(null, SUMMARY_NOTIFICATION_ID) - } + if (summaryNotification == SummaryNotification.Removed) { + Timber.d("Removing summary notification") + notificationDisplayer.cancelNotificationMessage(null, SUMMARY_NOTIFICATION_ID) } roomNotifications.forEach { wrapper -> @@ -94,11 +92,9 @@ class NotificationRenderer @Inject constructor(private val notificationDisplayer } // Update summary last to avoid briefly displaying it before other notifications - when (summaryNotification) { - is SummaryNotification.Update -> { - Timber.d("Updating summary notification") - notificationDisplayer.showNotificationMessage(null, SUMMARY_NOTIFICATION_ID, summaryNotification.notification) - } + if (summaryNotification is SummaryNotification.Update) { + Timber.d("Updating summary notification") + notificationDisplayer.showNotificationMessage(null, SUMMARY_NOTIFICATION_ID, summaryNotification.notification) } } } diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index 6659058b4e..856b2ab567 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -222,6 +222,7 @@ class OnboardingViewModel @AssistedInject constructor( .withAllowedFingerPrints(listOf(action.fingerprint)) .build() ) + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt index 5f15d9a35d..632625f4de 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt @@ -28,7 +28,6 @@ import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading -import com.airbnb.mvrx.Success import im.vector.app.R import im.vector.app.core.extensions.exhaustive import im.vector.app.core.extensions.hideKeyboard @@ -299,7 +298,7 @@ class FtueAuthLoginFragment @Inject constructor() : AbstractSSOFtueAuthFragment< } } // Success is handled by the LoginActivity - is Success -> Unit + else -> Unit } when (state.asyncRegistration) { @@ -308,7 +307,7 @@ class FtueAuthLoginFragment @Inject constructor() : AbstractSSOFtueAuthFragment< views.passwordField.hidePassword() } // Success is handled by the LoginActivity - is Success -> Unit + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordFragment.kt index 6a224dfae8..073801c920 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordFragment.kt @@ -23,7 +23,6 @@ import android.view.ViewGroup import androidx.lifecycle.lifecycleScope import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading -import com.airbnb.mvrx.Success import com.google.android.material.dialog.MaterialAlertDialogBuilder import im.vector.app.R import im.vector.app.core.extensions.hideKeyboard @@ -125,7 +124,7 @@ class FtueAuthResetPasswordFragment @Inject constructor() : AbstractFtueAuthFrag is Fail -> { views.resetPasswordEmailTil.error = errorFormatter.toHumanReadable(state.asyncResetPassword.error) } - is Success -> Unit + else -> Unit } } } diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordMailConfirmationFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordMailConfirmationFragment.kt index 1d5e1aa00a..f8b3266d37 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordMailConfirmationFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthResetPasswordMailConfirmationFragment.kt @@ -21,7 +21,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Success import com.google.android.material.dialog.MaterialAlertDialogBuilder import im.vector.app.R import im.vector.app.databinding.FragmentLoginResetPasswordMailConfirmationBinding @@ -61,7 +60,7 @@ class FtueAuthResetPasswordMailConfirmationFragment @Inject constructor() : Abst setupUi(state) when (state.asyncResetMailConfirmed) { - is Fail -> { + is Fail -> { // Link in email not yet clicked ? val message = if (state.asyncResetMailConfirmed.error.is401()) { getString(R.string.auth_reset_password_error_unauthorized) @@ -75,7 +74,7 @@ class FtueAuthResetPasswordMailConfirmationFragment @Inject constructor() : Abst .setPositiveButton(R.string.ok, null) .show() } - is Success -> Unit + else -> Unit } } } diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryActivity.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryActivity.kt index 48da9f4fa0..f0df31342e 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryActivity.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryActivity.kt @@ -62,8 +62,8 @@ class RoomDirectoryActivity : VectorBaseActivity(), Matri .stream() .onEach { sharedAction -> when (sharedAction) { - is RoomDirectorySharedAction.Back -> popBackstack() - is RoomDirectorySharedAction.CreateRoom -> { + is RoomDirectorySharedAction.Back -> popBackstack() + is RoomDirectorySharedAction.CreateRoom -> { // Transmit the filter to the CreateRoomFragment withState(roomDirectoryViewModel) { addFragmentToBackstack( @@ -73,9 +73,10 @@ class RoomDirectoryActivity : VectorBaseActivity(), Matri ) } } - is RoomDirectorySharedAction.ChangeProtocol -> + is RoomDirectorySharedAction.ChangeProtocol -> addFragmentToBackstack(views.simpleFragmentContainer, RoomDirectoryPickerFragment::class.java) - is RoomDirectorySharedAction.Close -> finish() + is RoomDirectorySharedAction.Close -> finish() + is RoomDirectorySharedAction.CreateRoomSuccess -> Unit } } .launchIn(lifecycleScope) diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerController.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerController.kt index 08e044630d..7d121d1ff4 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerController.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/picker/RoomDirectoryPickerController.kt @@ -22,7 +22,6 @@ import android.view.inputmethod.EditorInfo import android.widget.TextView import com.airbnb.epoxy.TypedEpoxyController import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success import com.airbnb.mvrx.Uninitialized @@ -60,7 +59,7 @@ class RoomDirectoryPickerController @Inject constructor( val host = this when (val asyncThirdPartyProtocol = data.asyncThirdPartyRequest) { - is Success -> { + is Success -> { data.directories.join( each = { _, roomDirectoryServer -> buildDirectory(roomDirectoryServer) }, between = { idx, _ -> buildDivider(idx) } @@ -71,12 +70,13 @@ class RoomDirectoryPickerController @Inject constructor( heightInPx(host.dimensionConverter.dpToPx(16)) } } - is Incomplete -> { + Uninitialized, + is Loading -> { loadingItem { id("loading") } } - is Fail -> { + is Fail -> { errorWithRetryItem { id("error") text(host.errorFormatter.toHumanReadable(asyncThirdPartyProtocol.error)) diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt index 7e919fb663..44e7405ee5 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -25,8 +25,9 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState @@ -198,18 +199,19 @@ class RoomMemberProfileFragment @Inject constructor( override fun invalidate() = withState(viewModel) { state -> when (val asyncUserMatrixItem = state.userMatrixItem) { - is Incomplete -> { + Uninitialized, + is Loading -> { views.matrixProfileToolbarTitleView.text = state.userId avatarRenderer.render(MatrixItem.UserItem(state.userId, null, null), views.matrixProfileToolbarAvatarImageView) headerViews.memberProfileStateView.state = StateView.State.Loading } - is Fail -> { + is Fail -> { avatarRenderer.render(MatrixItem.UserItem(state.userId, null, null), views.matrixProfileToolbarAvatarImageView) views.matrixProfileToolbarTitleView.text = state.userId val failureMessage = errorFormatter.toHumanReadable(asyncUserMatrixItem.error) headerViews.memberProfileStateView.state = StateView.State.Error(failureMessage) } - is Success -> { + is Success -> { val userMatrixItem = asyncUserMatrixItem() headerViews.memberProfileStateView.state = StateView.State.Content headerViews.memberProfileIdView.text = userMatrixItem.id diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt index 03e6ab9984..fcf6bc3a47 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt @@ -199,12 +199,13 @@ class RoomAliasController @Inject constructor( } when (val localAliases = data.localAliases) { - is Uninitialized -> { + Uninitialized, + is Loading -> { loadingItem { id("loadingAliases") } } - is Success -> { + is Success -> { if (localAliases().isEmpty()) { settingsInfoItem { id("locEmpty") @@ -220,7 +221,7 @@ class RoomAliasController @Inject constructor( } } } - is Fail -> { + is Fail -> { errorWithRetryItem { id("alt_error") text(host.errorFormatter.toHumanReadable(localAliases.error)) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/uploads/files/RoomUploadsFilesFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/uploads/files/RoomUploadsFilesFragment.kt index 1739378761..953838aecd 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/uploads/files/RoomUploadsFilesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/uploads/files/RoomUploadsFilesFragment.kt @@ -24,6 +24,7 @@ import androidx.core.content.ContextCompat import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.parentFragmentViewModel import com.airbnb.mvrx.withState import im.vector.app.R @@ -91,6 +92,7 @@ class RoomUploadsFilesFragment @Inject constructor( override fun invalidate() = withState(uploadsViewModel) { state -> if (state.fileEvents.isEmpty()) { when (state.asyncEventsRequest) { + Uninitialized, is Loading -> { views.genericStateViewListStateView.state = StateView.State.Loading } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/uploads/media/RoomUploadsMediaFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/uploads/media/RoomUploadsMediaFragment.kt index eb4337cffa..2f33f8403c 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/uploads/media/RoomUploadsMediaFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/uploads/media/RoomUploadsMediaFragment.kt @@ -29,6 +29,7 @@ import androidx.recyclerview.widget.GridLayoutManager import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.parentFragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.appbar.AppBarLayout @@ -188,6 +189,7 @@ class RoomUploadsMediaFragment @Inject constructor( override fun invalidate() = withState(uploadsViewModel) { state -> if (state.mediaEvents.isEmpty()) { when (state.asyncEventsRequest) { + Uninitialized, is Loading -> { views.genericStateViewListStateView.state = StateView.State.Loading } diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt index f3ae18a72f..4748aeb45e 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt @@ -21,6 +21,7 @@ import com.airbnb.epoxy.TypedEpoxyController import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.core.epoxy.loadingItem import im.vector.app.core.resources.StringProvider @@ -45,6 +46,7 @@ class AccountDataEpoxyController @Inject constructor( if (data == null) return val host = this when (data.accountData) { + Uninitialized, is Loading -> { loadingItem { id("loading") diff --git a/vector/src/main/java/im/vector/app/features/settings/locale/LocalePickerController.kt b/vector/src/main/java/im/vector/app/features/settings/locale/LocalePickerController.kt index 4e1c62a4ec..cffef0da7b 100644 --- a/vector/src/main/java/im/vector/app/features/settings/locale/LocalePickerController.kt +++ b/vector/src/main/java/im/vector/app/features/settings/locale/LocalePickerController.kt @@ -17,12 +17,16 @@ package im.vector.app.features.settings.locale import com.airbnb.epoxy.TypedEpoxyController -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Fail +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R +import im.vector.app.core.epoxy.errorWithRetryItem import im.vector.app.core.epoxy.loadingItem import im.vector.app.core.epoxy.noResultItem import im.vector.app.core.epoxy.profiles.profileSectionItem +import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.resources.StringProvider import im.vector.app.core.utils.safeCapitalize import im.vector.app.features.settings.VectorLocale @@ -32,7 +36,8 @@ import javax.inject.Inject class LocalePickerController @Inject constructor( private val vectorPreferences: VectorPreferences, - private val stringProvider: StringProvider + private val stringProvider: StringProvider, + private val errorFormatter: ErrorFormatter ) : TypedEpoxyController() { var listener: Listener? = null @@ -58,13 +63,14 @@ class LocalePickerController @Inject constructor( title(host.stringProvider.getString(R.string.choose_locale_other_locales_title)) } when (list) { - is Incomplete -> { + Uninitialized, + is Loading -> { loadingItem { id("loading") loadingText(host.stringProvider.getString(R.string.choose_locale_loading_locales)) } } - is Success -> + is Success -> if (list().isEmpty()) { noResultItem { id("noResult") @@ -84,6 +90,11 @@ class LocalePickerController @Inject constructor( } } } + is Fail -> + errorWithRetryItem { + id("error") + text(host.errorFormatter.toHumanReadable(list.error)) + } } } diff --git a/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsController.kt b/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsController.kt index d374357396..7fd2292274 100644 --- a/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsController.kt +++ b/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsController.kt @@ -21,6 +21,7 @@ import com.airbnb.epoxy.TypedEpoxyController import com.airbnb.mvrx.Fail import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.core.epoxy.loadingItem import im.vector.app.core.epoxy.noResultItem @@ -78,6 +79,7 @@ class ThreePidsSettingsController @Inject constructor( } when (data.threePids) { + Uninitialized, is Loading -> { loadingItem { id("loading") diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt index 0cd9cde547..e2f3c14e7d 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutController.kt @@ -18,8 +18,9 @@ package im.vector.app.features.signout.soft import com.airbnb.epoxy.EpoxyController import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.core.epoxy.loadingItem import im.vector.app.core.error.ErrorFormatter @@ -89,19 +90,20 @@ class SoftLogoutController @Inject constructor( private fun buildForm(state: SoftLogoutViewState) { val host = this when (state.asyncHomeServerLoginFlowRequest) { - is Incomplete -> { + Uninitialized, + is Loading -> { loadingItem { id("loading") } } - is Fail -> { + is Fail -> { loginErrorWithRetryItem { id("errorRetry") text(host.errorFormatter.toHumanReadable(state.asyncHomeServerLoginFlowRequest.error)) listener { host.listener?.retry() } } } - is Success -> { + is Success -> { when (state.asyncHomeServerLoginFlowRequest.invoke()) { LoginMode.Password -> { loginPasswordFormItem { diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt index dff98722eb..fb7786e3bd 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt @@ -22,8 +22,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.airbnb.epoxy.EpoxyTouchHelper -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import im.vector.app.core.extensions.cleanup @@ -121,8 +122,10 @@ class SpaceListFragment @Inject constructor( override fun invalidate() = withState(viewModel) { state -> when (state.asyncSpaces) { - is Incomplete -> views.stateView.state = StateView.State.Loading - is Success -> views.stateView.state = StateView.State.Content + Uninitialized, + is Loading -> views.stateView.state = StateView.State.Loading + is Success -> views.stateView.state = StateView.State.Content + else -> Unit } spaceController.update(state) } diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt index 85f80960b0..12ae8fc1f9 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt @@ -85,6 +85,7 @@ class SpaceManageActivity : VectorBaseActivity() { when (sharedAction) { is RoomDirectorySharedAction.Back, is RoomDirectorySharedAction.Close -> finish() + else -> Unit } } .launchIn(lifecycleScope) diff --git a/vector/src/main/java/im/vector/app/features/terms/TermsController.kt b/vector/src/main/java/im/vector/app/features/terms/TermsController.kt index 6109e9abc8..10238829b3 100644 --- a/vector/src/main/java/im/vector/app/features/terms/TermsController.kt +++ b/vector/src/main/java/im/vector/app/features/terms/TermsController.kt @@ -17,8 +17,9 @@ package im.vector.app.features.terms import com.airbnb.epoxy.TypedEpoxyController import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete +import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success +import com.airbnb.mvrx.Uninitialized import im.vector.app.R import im.vector.app.core.epoxy.errorWithRetryItem import im.vector.app.core.epoxy.loadingItem @@ -38,19 +39,20 @@ class TermsController @Inject constructor( val host = this when (data.termsList) { - is Incomplete -> { + Uninitialized, + is Loading -> { loadingItem { id("loading") } } - is Fail -> { + is Fail -> { errorWithRetryItem { id("errorRetry") text(host.errorFormatter.toHumanReadable(data.termsList.error)) listener { host.listener?.retry() } } } - is Success -> buildTerms(data.termsList.invoke()) + is Success -> buildTerms(data.termsList.invoke()) } } @@ -67,7 +69,7 @@ class TermsController @Inject constructor( description(host.description) checked(term.accepted) - clickListener { host.listener?.review(term) } + clickListener { host.listener?.review(term) } checkChangeListener { _, isChecked -> host.listener?.setChecked(term, isChecked) } diff --git a/vector/src/main/java/im/vector/app/features/usercode/UserCodeSharedViewModel.kt b/vector/src/main/java/im/vector/app/features/usercode/UserCodeSharedViewModel.kt index 64bcf9cead..da894a42be 100644 --- a/vector/src/main/java/im/vector/app/features/usercode/UserCodeSharedViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/usercode/UserCodeSharedViewModel.kt @@ -62,12 +62,12 @@ class UserCodeSharedViewModel @AssistedInject constructor( override fun handle(action: UserCodeActions) { when (action) { - UserCodeActions.DismissAction -> _viewEvents.post(UserCodeShareViewEvents.Dismiss) - is UserCodeActions.SwitchMode -> setState { copy(mode = action.mode) } - is UserCodeActions.DecodedQRCode -> handleQrCodeDecoded(action) - is UserCodeActions.StartChattingWithUser -> handleStartChatting(action) + UserCodeActions.DismissAction -> _viewEvents.post(UserCodeShareViewEvents.Dismiss) + is UserCodeActions.SwitchMode -> setState { copy(mode = action.mode) } + is UserCodeActions.DecodedQRCode -> handleQrCodeDecoded(action) + is UserCodeActions.StartChattingWithUser -> handleStartChatting(action) is UserCodeActions.CameraPermissionNotGranted -> _viewEvents.post(UserCodeShareViewEvents.CameraPermissionNotGranted(action.deniedPermanently)) - UserCodeActions.ShareByText -> handleShareByText() + UserCodeActions.ShareByText -> handleShareByText() } } @@ -110,11 +110,11 @@ class UserCodeSharedViewModel @AssistedInject constructor( _viewEvents.post(UserCodeShareViewEvents.ShowWaitingScreen) viewModelScope.launch(Dispatchers.IO) { when (linkedId) { - is PermalinkData.RoomLink -> { + is PermalinkData.RoomLink -> { // not yet supported _viewEvents.post(UserCodeShareViewEvents.ToastMessage(stringProvider.getString(R.string.not_implemented))) } - is PermalinkData.UserLink -> { + is PermalinkData.UserLink -> { val user = tryOrNull { session.resolveUser(linkedId.userId) } // Create raw Uxid in case the user is not searchable ?: User(linkedId.userId, null, null) @@ -125,14 +125,15 @@ class UserCodeSharedViewModel @AssistedInject constructor( ) } } - is PermalinkData.GroupLink -> { + is PermalinkData.GroupLink -> { // not yet supported _viewEvents.post(UserCodeShareViewEvents.ToastMessage(stringProvider.getString(R.string.not_implemented))) } - is PermalinkData.FallbackLink -> { + is PermalinkData.FallbackLink -> { // not yet supported _viewEvents.post(UserCodeShareViewEvents.ToastMessage(stringProvider.getString(R.string.not_implemented))) } + is PermalinkData.RoomEmailInviteLink -> Unit } _viewEvents.post(UserCodeShareViewEvents.HideWaitingScreen) } diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt index 963bd9521c..77ec4c5b06 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt @@ -80,6 +80,7 @@ class WidgetActivity : VectorBaseActivity() { viewModel.observeViewEvents { when (it) { is WidgetViewEvents.Close -> handleClose(it) + else -> Unit } } diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt index 8fa9e07848..dbd63186b6 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt @@ -29,7 +29,6 @@ import android.view.ViewGroup import androidx.core.view.isInvisible import androidx.core.view.isVisible import com.airbnb.mvrx.Fail -import com.airbnb.mvrx.Incomplete import com.airbnb.mvrx.Loading import com.airbnb.mvrx.Success import com.airbnb.mvrx.Uninitialized @@ -87,6 +86,7 @@ class WidgetFragment @Inject constructor() : is WidgetViewEvents.OnURLFormatted -> loadFormattedUrl(it) is WidgetViewEvents.DisplayIntegrationManager -> displayIntegrationManager(it) is WidgetViewEvents.Failure -> displayErrorDialog(it.throwable) + is WidgetViewEvents.Close -> Unit } } viewModel.handle(WidgetAction.LoadFormattedUrl) @@ -192,13 +192,14 @@ class WidgetFragment @Inject constructor() : override fun invalidate() = withState(viewModel) { state -> Timber.v("Invalidate state: $state") when (state.formattedURL) { - is Incomplete -> { + Uninitialized, + is Loading -> { setStateError(null) views.widgetWebView.isInvisible = true views.widgetProgressBar.isIndeterminate = true views.widgetProgressBar.isVisible = true } - is Success -> { + is Success -> { setStateError(null) when (state.webviewLoadedUrl) { Uninitialized -> { @@ -221,7 +222,7 @@ class WidgetFragment @Inject constructor() : } } } - is Fail -> { + is Fail -> { // we need to show Error views.widgetWebView.isInvisible = true views.widgetProgressBar.isVisible = false diff --git a/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionViewModel.kt b/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionViewModel.kt index f29e6d1928..78871da324 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionViewModel.kt @@ -93,6 +93,7 @@ class RoomWidgetPermissionViewModel @AssistedInject constructor(@Assisted val in when (action) { RoomWidgetPermissionActions.AllowWidget -> handleAllowWidget() RoomWidgetPermissionActions.BlockWidget -> handleRevokeWidget() + RoomWidgetPermissionActions.DoClose -> Unit } }