1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-2816 Auth | Fix | Refact error handling on mnemonic-login screen (#1803)

This commit is contained in:
Evgenii Kozlov 2024-11-18 14:23:51 +01:00 committed by GitHub
parent 3a2defa5ec
commit 5c16df81ec
Signed by: github
GPG key ID: B5690EEEBB952194
3 changed files with 34 additions and 12 deletions

View file

@ -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
}
}
}
}

View file

@ -1702,6 +1702,8 @@ Please provide specific details of your needs here.</string>
<string name="membership_error_button_text_dismiss">Ok</string>
<string name="error_login_network_id_mismatch">Network ID mismatch detected. Please verify your network configuration.</string>
<string name="error_login_select_vault_error">Select vault error.</string>
<string name="error_login_account_deleted_error">This account is deleted. Try using another account or create a new one.</string>
<string name="error_login_account_need_update_error">Unable to retrieve account. Please update Anytype to the latest version.</string>
<string name="global_search_related_to">"Related to: "</string>
<string name="global_search_no_related_objects_found">No related objects found</string>

View file

@ -66,8 +66,6 @@ class OnboardingMnemonicLoginViewModel @Inject constructor(
val command = MutableSharedFlow<Command>(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()