diff --git a/app/src/main/java/com/anytypeio/anytype/ui/onboarding/OnboardingFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/onboarding/OnboardingFragment.kt index 494f6990ad..eaf08c12be 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/onboarding/OnboardingFragment.kt @@ -399,6 +399,14 @@ class OnboardingFragment : Fragment() { errorText.value = getString(R.string.error_login_select_vault_error) isErrorDialogVisible.value = true } + is OnboardingMnemonicLoginViewModel.SideEffect.Error.AccountDeletedError -> { + errorText.value = getString(R.string.error_login_account_deleted_error) + isErrorDialogVisible.value = true + } + is OnboardingMnemonicLoginViewModel.SideEffect.Error.NeedUpdateError -> { + errorText.value = getString(R.string.error_login_account_need_update_error) + isErrorDialogVisible.value = true + } } } } diff --git a/localization/src/main/res/values/strings.xml b/localization/src/main/res/values/strings.xml index e810d38c87..74fd44bbaf 100644 --- a/localization/src/main/res/values/strings.xml +++ b/localization/src/main/res/values/strings.xml @@ -1702,6 +1702,8 @@ Please provide specific details of your needs here. Ok Network ID mismatch detected. Please verify your network configuration. Select vault error. + This account is deleted. Try using another account or create a new one. + Unable to retrieve account. Please update Anytype to the latest version. "Related to: " No related objects found diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt index 0074a545f2..9c8b081095 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/login/OnboardingMnemonicLoginViewModel.kt @@ -66,8 +66,6 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( val command = MutableSharedFlow(replay = 0) - val error by lazy { MutableStateFlow(NO_ERROR) } - private var debugClickCount = 0 private val _fiveClicks = MutableStateFlow(false) @@ -216,14 +214,22 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( ) { result -> result.either( fnL = { e -> - if (e is AccountIsDeletedException) { - error.value = "This account is deleted. Try using another account or create a new one." - } else { - error.value = "Error while account loading \n ${e.localizedMessage}" + viewModelScope.launch { + if (e is AccountIsDeletedException) { + sideEffects.emit( + value = SideEffect.Error.Unknown( + msg = "This account is deleted. Try using another account or create a new one." + ) + ) + } else { + sideEffects.emit( + value = SideEffect.Error.Unknown( + msg = "Error while account loading \n ${e.localizedMessage}" + ) + ) + } + Timber.e(e, "Error while account loading") } - Timber.e(e, "Error while account loading") - // TODO refact - viewModelScope.launch { command.emit(Command.Exit) } }, fnR = { Timber.d("Account loading successfully finished") @@ -263,10 +269,10 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( navigateToMigrationErrorScreen() } is AccountIsDeletedException -> { - error.value = "This account is deleted. Try using another account or create a new one." + sideEffects.emit(value = SideEffect.Error.AccountDeletedError) } is NeedToUpdateApplicationException -> { - error.value = SplashViewModel.ERROR_NEED_UPDATE + sideEffects.emit(value = SideEffect.Error.NeedUpdateError) } is LoginException.NetworkIdMismatch -> { sideEffects.emit(SideEffect.Error.NetworkIdMismatch) @@ -276,7 +282,11 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( } else -> { val msg = e.message ?: "Unknown error" - error.value = "${ERROR_MESSAGE}: $msg" + sideEffects.emit( + value = SideEffect.Error.Unknown( + msg = "${ERROR_MESSAGE}: $msg" + ) + ) } } }, @@ -371,6 +381,8 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( data object InvalidMnemonic : Error() data object NetworkIdMismatch: Error() data object SelectVaultError: Error() + data object AccountDeletedError: Error() + data object NeedUpdateError: Error() data class Unknown(val msg: String): SideEffect() } data object Exit: SideEffect()