From 8990adcc6e63fdca63020a176eef7535f8942209 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 17 Mar 2025 13:33:13 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../features/onboarding/OnboardingHelper.kt | 7 +---- .../redux/OnboardingWalletMiddleware.kt | 7 +---- .../tangem/tap/routing/utils/ChildFactory.kt | 2 -- .../com/tangem/common/routing/AppRoute.kt | 4 +-- .../v2/entry/OnboardingEntryComponent.kt | 1 - .../entry/impl/model/OnboardingEntryModel.kt | 14 +++++++--- .../wallet-settings/impl/build.gradle.kts | 1 + .../model/WalletSettingsModel.kt | 26 +++++++++++++------ .../router/DefaultWalletRouter.kt | 1 - 9 files changed, 32 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt index 2d53df4f9b..b7642d1a29 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt @@ -83,7 +83,6 @@ object OnboardingHelper { return AppRoute.Onboarding( scanResponse = scanResponse, - startFromBackup = false, mode = when (backupState.startedSource) { BackupStartedSource.Onboarding -> AppRoute.Onboarding.Mode.Onboarding BackupStartedSource.CreateBackup -> AppRoute.Onboarding.Mode.AddBackup @@ -93,11 +92,7 @@ object OnboardingHelper { return when (val type = scanResponse.productType) { ProductType.Note -> if (featureToggles.isNoteRefactoringEnabled) { - AppRoute.Onboarding( - scanResponse = scanResponse, - startFromBackup = false, - mode = AppRoute.Onboarding.Mode.Onboarding, - ) + AppRoute.Onboarding(scanResponse = scanResponse) } else { AppRoute.OnboardingNote } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt index 6ad91766cb..855d95ce35 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt @@ -624,12 +624,7 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction) if (action.unfinishedBackupScanResponse != null) { // onboarding V2 store.dispatchNavigationAction { - push( - AppRoute.Onboarding( - scanResponse = action.unfinishedBackupScanResponse, - startFromBackup = false, - ), - ) + push(AppRoute.Onboarding(scanResponse = action.unfinishedBackupScanResponse)) } } else { store.dispatch( diff --git a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt index a852857c6d..0ff58d9f5f 100644 --- a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt +++ b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt @@ -202,7 +202,6 @@ internal class ChildFactory @Inject constructor( contextProvider = contextProvider(route, contextFactory), params = OnboardingEntryComponent.Params( scanResponse = route.scanResponse, - startBackupFlow = route.startFromBackup, multiWalletMode = when (route.mode) { AppRoute.Onboarding.Mode.Onboarding -> OnboardingEntryComponent.MultiWalletMode.Onboarding AppRoute.Onboarding.Mode.AddBackup -> OnboardingEntryComponent.MultiWalletMode.AddBackup @@ -641,7 +640,6 @@ internal class ChildFactory @Inject constructor( contextProvider = contextProvider(route, contextFactory), params = OnboardingEntryComponent.Params( scanResponse = route.scanResponse, - startBackupFlow = route.startFromBackup, multiWalletMode = when (route.mode) { AppRoute.Onboarding.Mode.Onboarding -> OnboardingEntryComponent.MultiWalletMode.Onboarding AppRoute.Onboarding.Mode.AddBackup -> OnboardingEntryComponent.MultiWalletMode.AddBackup diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index ce6d8603f5..f033d76c1e 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -245,15 +245,13 @@ sealed class AppRoute(val path: String) : Route { /** * Onboarding V2 * @property scanResponse scan response, determines onboarding route by the product type - * @property startFromBackup (MultiWallet param, doesn't affect other types) start onboarding from backup * @property mode (MultiWallet param, doesn't affect other types) onboarding mode */ @Serializable data class Onboarding( val scanResponse: ScanResponse, - val startFromBackup: Boolean = false, val mode: Mode = Mode.Onboarding, - ) : AppRoute(path = "/onboarding_v2${if (startFromBackup) "/backup" else ""}") { + ) : AppRoute(path = "/onboarding_v2/${mode.name}") { enum class Mode { Onboarding, // general Mode diff --git a/features/onboarding-v2/api/src/main/kotlin/com/tangem/features/onboarding/v2/entry/OnboardingEntryComponent.kt b/features/onboarding-v2/api/src/main/kotlin/com/tangem/features/onboarding/v2/entry/OnboardingEntryComponent.kt index 1e1bc4d93b..9649b1e0c7 100644 --- a/features/onboarding-v2/api/src/main/kotlin/com/tangem/features/onboarding/v2/entry/OnboardingEntryComponent.kt +++ b/features/onboarding-v2/api/src/main/kotlin/com/tangem/features/onboarding/v2/entry/OnboardingEntryComponent.kt @@ -8,7 +8,6 @@ interface OnboardingEntryComponent : ComposableContentComponent { data class Params( val scanResponse: ScanResponse, - val startBackupFlow: Boolean, val multiWalletMode: MultiWalletMode, ) diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt index ef5e1ffa37..75ce0e4bcf 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/model/OnboardingEntryModel.kt @@ -92,10 +92,16 @@ internal class OnboardingEntryModel @Inject constructor( } private fun onMultiWalletOnboardingDone(userWallet: UserWallet) { - if (userWallet.scanResponse.cardTypesResolver.isMultiwalletAllowed()) { - stackNavigation.replaceAll(OnboardingRoute.ManageTokens(userWallet)) - } else { - navigateToFinalScreenFlow() + when { + params.multiWalletMode == OnboardingEntryComponent.MultiWalletMode.AddBackup -> { + stackNavigation.replaceAll(OnboardingRoute.Done(onDone = ::navigateToWalletScreen)) + } + userWallet.scanResponse.cardTypesResolver.isMultiwalletAllowed() -> { + stackNavigation.replaceAll(OnboardingRoute.ManageTokens(userWallet)) + } + else -> { + navigateToFinalScreenFlow() + } } } diff --git a/features/wallet-settings/impl/build.gradle.kts b/features/wallet-settings/impl/build.gradle.kts index ca5f65ffc4..0cfc119783 100644 --- a/features/wallet-settings/impl/build.gradle.kts +++ b/features/wallet-settings/impl/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { implementation(projects.features.walletSettings.api) implementation(projects.features.manageTokens.api) implementation(projects.features.nft.api) + implementation(projects.features.onboardingV2.api) /* Project - Core */ implementation(projects.core.decompose) diff --git a/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt b/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt index 764f57f277..52f23e9529 100644 --- a/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt +++ b/features/wallet-settings/impl/src/main/kotlin/com/tangem/feature/walletsettings/model/WalletSettingsModel.kt @@ -33,6 +33,7 @@ import com.tangem.feature.walletsettings.entity.WalletSettingsUM import com.tangem.feature.walletsettings.impl.R import com.tangem.feature.walletsettings.utils.ItemsBuilder import com.tangem.features.nft.NFTFeatureToggles +import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles import com.tangem.utils.coroutines.CoroutineDispatcherProvider import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf @@ -57,6 +58,7 @@ internal class WalletSettingsModel @Inject constructor( private val getShouldSaveUserWalletsSyncUseCase: ShouldSaveUserWalletsSyncUseCase, private val walletsRepository: WalletsRepository, private val nftFeatureToggles: NFTFeatureToggles, + private val onboardingV2FeatureToggles: OnboardingV2FeatureToggles, ) : Model() { val params: WalletSettingsComponent.Params = paramsContainer.require() @@ -156,17 +158,25 @@ internal class WalletSettingsModel @Inject constructor( private fun onLinkMoreCardsClick(scanResponse: ScanResponse) { analyticsEventHandler.send(Settings.ButtonCreateBackup) - analyticsContextProxy.addContext(scanResponse) - reduxStateHolder.dispatch( - LegacyAction.StartOnboardingProcess( - scanResponse = scanResponse, - canSkipBackup = false, - ), - ) + if (onboardingV2FeatureToggles.isOnboardingV2Enabled) { + router.push( + AppRoute.Onboarding( + scanResponse = scanResponse, + mode = AppRoute.Onboarding.Mode.AddBackup, + ), + ) + } else { + reduxStateHolder.dispatch( + LegacyAction.StartOnboardingProcess( + scanResponse = scanResponse, + canSkipBackup = false, + ), + ) - router.push(AppRoute.OnboardingWallet()) + router.push(AppRoute.OnboardingWallet()) + } } private fun onCheckedNFTChange(isChecked: Boolean) { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt index c32de7180a..967c19ebed 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt @@ -53,7 +53,6 @@ internal class DefaultWalletRouter @Inject constructor( router.push( AppRoute.Onboarding( scanResponse = scanResponse, - startFromBackup = true, mode = if (continueBackup) { AppRoute.Onboarding.Mode.AddBackup } else {