Updated on 2026-08-14
This commit is contained in:
parent
995c082869
commit
8990adcc6e
9 changed files with 32 additions and 31 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ interface OnboardingEntryComponent : ComposableContentComponent {
|
|||
|
||||
data class Params(
|
||||
val scanResponse: ScanResponse,
|
||||
val startBackupFlow: Boolean,
|
||||
val multiWalletMode: MultiWalletMode,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue