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()