From c27a21282b57897f9212ec36bc32b9195e5ae112 Mon Sep 17 00:00:00 2001 From: Evgenii Kozlov Date: Wed, 26 Jun 2024 14:02:25 +0200 Subject: [PATCH] DROID-2612 Auth | Fix | Handle Rpc.Account.Select.Response.Error.Code.FAILED_TO_FIND_ACCOUNT_INFO (#1326) --- .../anytypeio/anytype/ui/onboarding/OnboardingFragment.kt | 4 ++++ .../com/anytypeio/anytype/ui/search/GlobalSearchScreen.kt | 2 +- .../anytype/core_models/exceptions/LoginException.kt | 1 + localization/src/main/res/values/strings.xml | 2 ++ .../middleware/service/MiddlewareServiceImplementation.kt | 2 +- .../onboarding/login/OnboardingMnemonicLoginViewModel.kt | 6 +++++- 6 files changed, 14 insertions(+), 3 deletions(-) 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 5a2af5a24f..f6a2b9b85e 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 @@ -394,6 +394,10 @@ class OnboardingFragment : Fragment() { errorText.value = getString(R.string.error_login_network_id_mismatch) isErrorDialogVisible.value = true } + is OnboardingMnemonicLoginViewModel.SideEffect.Error.SelectVaultError -> { + errorText.value = getString(R.string.error_login_select_vault_error) + isErrorDialogVisible.value = true + } } } } diff --git a/app/src/main/java/com/anytypeio/anytype/ui/search/GlobalSearchScreen.kt b/app/src/main/java/com/anytypeio/anytype/ui/search/GlobalSearchScreen.kt index 35608d6933..559c4dd737 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/search/GlobalSearchScreen.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/search/GlobalSearchScreen.kt @@ -368,7 +368,7 @@ fun GlobalSearchScreen( style = BodyCalloutMedium ) Text( - text = stringResource(id = R.string.try_to_create_new_one_or_search_for_something_else), + text = stringResource(id = R.string.try_different_search_query), style = BodyCalloutRegular, modifier = Modifier.padding(horizontal = 12.dp) ) diff --git a/core-models/src/main/java/com/anytypeio/anytype/core_models/exceptions/LoginException.kt b/core-models/src/main/java/com/anytypeio/anytype/core_models/exceptions/LoginException.kt index 4ba0b37765..fc47ead448 100644 --- a/core-models/src/main/java/com/anytypeio/anytype/core_models/exceptions/LoginException.kt +++ b/core-models/src/main/java/com/anytypeio/anytype/core_models/exceptions/LoginException.kt @@ -3,4 +3,5 @@ package com.anytypeio.anytype.core_models.exceptions sealed class LoginException : Exception() { class InvalidMnemonic : LoginException() class NetworkIdMismatch: LoginException() + class FailedToFindAccountInfo: LoginException() } \ No newline at end of file diff --git a/localization/src/main/res/values/strings.xml b/localization/src/main/res/values/strings.xml index 20b958fb20..f22f5d9e22 100644 --- a/localization/src/main/res/values/strings.xml +++ b/localization/src/main/res/values/strings.xml @@ -570,6 +570,7 @@ Your collections of objects There is no type named \"%1$s\" Try to create a new one or search for something else + Try a different search query. Change wallpaper Change icon Random @@ -1673,6 +1674,7 @@ Please provide specific details of your needs here. Contact us Ok Network ID mismatch detected. Please verify your network configuration. + Select vault error. "Related to: " No related objects found diff --git a/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt b/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt index 09a3cf2f72..7ffa74a45f 100644 --- a/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt +++ b/middleware/src/main/java/com/anytypeio/anytype/middleware/service/MiddlewareServiceImplementation.kt @@ -82,7 +82,7 @@ class MiddlewareServiceImplementation @Inject constructor( if (error != null && error.code != Rpc.Account.Select.Response.Error.Code.NULL) { when(error.code) { Rpc.Account.Select.Response.Error.Code.FAILED_TO_FIND_ACCOUNT_INFO -> { - throw MigrationNeededException() + throw LoginException.FailedToFindAccountInfo() } Rpc.Account.Select.Response.Error.Code.ACCOUNT_IS_DELETED -> { throw AccountIsDeletedException() 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 c918b9b34a..3438ecbfe6 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 @@ -110,7 +110,7 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( proceedWithAbortAndExit() } is SetupState.Abort -> { - command.emit(Command.ShowToast("Aborting... Please wait!")) + sideEffects.emit(SideEffect.Exit) } else -> { sideEffects.emit(SideEffect.Exit) @@ -275,6 +275,9 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( is LoginException.NetworkIdMismatch -> { sideEffects.emit(SideEffect.Error.NetworkIdMismatch) } + is LoginException.FailedToFindAccountInfo -> { + sideEffects.emit(SideEffect.Error.SelectVaultError) + } else -> { val msg = e.message ?: "Unknown error" error.value = "${ERROR_MESSAGE}: $msg" @@ -354,6 +357,7 @@ class OnboardingMnemonicLoginViewModel @Inject constructor( sealed class Error : SideEffect() { data object InvalidMnemonic : Error() data object NetworkIdMismatch: Error() + data object SelectVaultError: Error() data class Unknown(val msg: String): SideEffect() } data object Exit: SideEffect()