diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsMiddleware.kt index 3ee9db75ea..243319a1c0 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/redux/OnboardingOtherCardsMiddleware.kt @@ -1,12 +1,15 @@ package com.tangem.tap.features.onboarding.products.otherCards.redux import com.tangem.common.CompletionResult +import com.tangem.common.core.TangemSdkError import com.tangem.core.analytics.Analytics import com.tangem.domain.common.extensions.withMainContext import com.tangem.tap.common.analytics.events.Onboarding +import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.postUi import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction +import com.tangem.tap.features.onboarding.OnboardingDialog import com.tangem.tap.features.onboarding.OnboardingHelper import com.tangem.tap.scope import com.tangem.tap.store @@ -72,7 +75,10 @@ private fun handleOtherCardsAction(action: Action) { } is OnboardingOtherCardsAction.CreateWallet -> { scope.launch { - val result = tangemSdkManager.createProductWallet(onboardingManager.scanResponse) + val result = tangemSdkManager.createProductWallet( + scanResponse = onboardingManager.scanResponse, + shouldReset = globalState.onboardingState.shouldResetOnCreate, + ) withMainContext { when (result) { is CompletionResult.Success -> { @@ -87,7 +93,11 @@ private fun handleOtherCardsAction(action: Action) { delay(DELAY_SDK_DIALOG_CLOSE) store.dispatch(OnboardingOtherCardsAction.SetStepOfScreen(OnboardingOtherCardsStep.Done)) } - is CompletionResult.Failure -> Unit + is CompletionResult.Failure -> { + if (result.error is TangemSdkError.WalletAlreadyCreated) { + handleActivationError() + } + } } } } @@ -101,4 +111,14 @@ private fun handleOtherCardsAction(action: Action) { } else -> Unit } +} + +private fun handleActivationError() { + store.dispatchDialogShow( + OnboardingDialog.WalletActivationError( + onConfirm = { + store.dispatch(GlobalAction.Onboarding.ShouldResetCardOnCreate(true)) + }, + ), + ) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt index 7ab41ec265..9408cbcc9e 100644 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt @@ -129,7 +129,14 @@ internal class SaveWalletMiddleware { } store.dispatchOnMain(SaveWalletAction.Save.Success) - store.dispatchOnMain(NavigationAction.PopBackTo(AppScreen.Wallet)) + + store.dispatchOnMain( + if (store.state.navigationState.backStack.contains(AppScreen.Wallet)) { + NavigationAction.PopBackTo(AppScreen.Wallet) + } else { + NavigationAction.NavigateTo(AppScreen.Wallet) + }, + ) } } } diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/configs/CardConfig.kt b/domain/legacy/src/main/java/com/tangem/domain/common/configs/CardConfig.kt index 51ff7de9b3..7e3fc92045 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/common/configs/CardConfig.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/common/configs/CardConfig.kt @@ -22,7 +22,7 @@ sealed interface CardConfig { ) { return MultiWalletCardConfig } - return GenericCardConfig + return GenericCardConfig(cardDTO.settings.maxWalletsCount) } } } \ No newline at end of file diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/configs/GenericCardConfig.kt b/domain/legacy/src/main/java/com/tangem/domain/common/configs/GenericCardConfig.kt index 4955dbdb11..547bfe780d 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/common/configs/GenericCardConfig.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/common/configs/GenericCardConfig.kt @@ -4,12 +4,14 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.common.card.EllipticCurve import timber.log.Timber -object GenericCardConfig : CardConfig { - override val mandatoryCurves: List - get() = listOf( - EllipticCurve.Secp256k1, - EllipticCurve.Ed25519, - ) +internal class GenericCardConfig(maxWalletCount: Int) : CardConfig { + + override val mandatoryCurves: List = buildList { + add(EllipticCurve.Secp256k1) + if (maxWalletCount > 1) { + add(EllipticCurve.Ed25519) + } + } /** * Old logic to determine primary curve for blockchain