Updated on 2026-08-14
This commit is contained in:
parent
6db5fde59a
commit
d452b4ca23
9 changed files with 39 additions and 5 deletions
|
|
@ -624,7 +624,12 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction)
|
|||
if (action.unfinishedBackupScanResponse != null) {
|
||||
// onboarding V2
|
||||
store.dispatchNavigationAction {
|
||||
push(AppRoute.Onboarding(scanResponse = action.unfinishedBackupScanResponse))
|
||||
push(
|
||||
AppRoute.Onboarding(
|
||||
scanResponse = action.unfinishedBackupScanResponse,
|
||||
mode = AppRoute.Onboarding.Mode.ContinueFinalize,
|
||||
),
|
||||
)
|
||||
}
|
||||
} else {
|
||||
store.dispatch(
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.tangem.tap.features.welcome.model
|
|||
|
||||
import com.tangem.common.core.TangemError
|
||||
import com.tangem.core.analytics.Analytics
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.navigation.finisher.AppFinisher
|
||||
|
|
@ -23,6 +24,7 @@ import org.rekotlin.StoreSubscriber
|
|||
import javax.inject.Inject
|
||||
|
||||
// FIXME: Remove redux: [REDACTED_JIRA]
|
||||
@ModelScoped
|
||||
internal class WelcomeModel @Inject constructor(
|
||||
override val dispatchers: CoroutineDispatcherProvider,
|
||||
private val appFinisher: AppFinisher,
|
||||
|
|
|
|||
|
|
@ -204,6 +204,8 @@ internal class ChildFactory @Inject constructor(
|
|||
multiWalletMode = when (route.mode) {
|
||||
AppRoute.Onboarding.Mode.Onboarding -> OnboardingEntryComponent.MultiWalletMode.Onboarding
|
||||
AppRoute.Onboarding.Mode.AddBackup -> OnboardingEntryComponent.MultiWalletMode.AddBackup
|
||||
AppRoute.Onboarding.Mode.ContinueFinalize ->
|
||||
OnboardingEntryComponent.MultiWalletMode.ContinueFinalize
|
||||
},
|
||||
),
|
||||
componentFactory = onboardingEntryComponentFactory,
|
||||
|
|
@ -648,6 +650,8 @@ internal class ChildFactory @Inject constructor(
|
|||
multiWalletMode = when (route.mode) {
|
||||
AppRoute.Onboarding.Mode.Onboarding -> OnboardingEntryComponent.MultiWalletMode.Onboarding
|
||||
AppRoute.Onboarding.Mode.AddBackup -> OnboardingEntryComponent.MultiWalletMode.AddBackup
|
||||
AppRoute.Onboarding.Mode.ContinueFinalize ->
|
||||
OnboardingEntryComponent.MultiWalletMode.ContinueFinalize
|
||||
},
|
||||
),
|
||||
componentFactory = onboardingEntryComponentFactory,
|
||||
|
|
|
|||
|
|
@ -256,6 +256,7 @@ sealed class AppRoute(val path: String) : Route {
|
|||
enum class Mode {
|
||||
Onboarding, // general Mode
|
||||
AddBackup, // continue backup process for existing wallet 1
|
||||
ContinueFinalize, // continue finalize process (unfinished backup dialog)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ interface OnboardingEntryComponent : ComposableContentComponent {
|
|||
enum class MultiWalletMode {
|
||||
Onboarding,
|
||||
AddBackup,
|
||||
ContinueFinalize,
|
||||
}
|
||||
|
||||
interface Factory : ComponentFactory<Params, OnboardingEntryComponent>
|
||||
|
|
|
|||
|
|
@ -67,8 +67,12 @@ internal class OnboardingEntryModel @Inject constructor(
|
|||
|
||||
private fun routeByProductType(scanResponse: ScanResponse): OnboardingRoute {
|
||||
val multiWalletNavigationMode = when (params.multiWalletMode) {
|
||||
OnboardingEntryComponent.MultiWalletMode.Onboarding -> OnboardingMultiWalletComponent.Mode.Onboarding
|
||||
OnboardingEntryComponent.MultiWalletMode.AddBackup -> OnboardingMultiWalletComponent.Mode.AddBackup
|
||||
OnboardingEntryComponent.MultiWalletMode.Onboarding ->
|
||||
OnboardingMultiWalletComponent.Mode.Onboarding
|
||||
OnboardingEntryComponent.MultiWalletMode.AddBackup ->
|
||||
OnboardingMultiWalletComponent.Mode.AddBackup
|
||||
OnboardingEntryComponent.MultiWalletMode.ContinueFinalize ->
|
||||
OnboardingMultiWalletComponent.Mode.ContinueFinalize
|
||||
}
|
||||
|
||||
return when (scanResponse.productType) {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ interface OnboardingMultiWalletComponent : ComposableContentComponent, InnerNavi
|
|||
enum class Mode {
|
||||
Onboarding,
|
||||
AddBackup,
|
||||
ContinueFinalize,
|
||||
}
|
||||
|
||||
interface Factory : ComponentFactory<Params, OnboardingMultiWalletComponent>
|
||||
|
|
|
|||
|
|
@ -227,7 +227,9 @@ internal class MultiWalletFinalizeModel @Inject constructor(
|
|||
val userWalletCreated = createUserWallet(scanResponse)
|
||||
|
||||
val userWallet = when (params.parentParams.mode) {
|
||||
OnboardingMultiWalletComponent.Mode.Onboarding -> {
|
||||
OnboardingMultiWalletComponent.Mode.Onboarding,
|
||||
OnboardingMultiWalletComponent.Mode.ContinueFinalize,
|
||||
-> {
|
||||
userWalletsListManager.save(
|
||||
userWallet = userWalletCreated.copy(
|
||||
scanResponse = scanResponse.updateScanResponseAfterBackup(),
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ internal class OnboardingMultiWalletModel @Inject constructor(
|
|||
currentStep = getInitialStep(),
|
||||
currentScanResponse = params.scanResponse,
|
||||
accessCode = null,
|
||||
isThreeCards = true,
|
||||
isThreeCards = isThreeCardsInit(),
|
||||
resultUserWallet = null,
|
||||
startFromFinalize = getInitialStartFromFinalize(),
|
||||
),
|
||||
|
|
@ -99,6 +99,8 @@ internal class OnboardingMultiWalletModel @Inject constructor(
|
|||
val card = scanResponse.card
|
||||
|
||||
return when {
|
||||
params.mode == OnboardingMultiWalletComponent.Mode.ContinueFinalize ->
|
||||
OnboardingMultiWalletState.Step.Finalize
|
||||
// Add backup button
|
||||
// Wallet1 without backup and userwallet's scanResponse doesn't contain primary card.
|
||||
card.wallets.isNotEmpty() && card.backupStatus == CardDTO.BackupStatus.NoBackup &&
|
||||
|
|
@ -131,6 +133,18 @@ internal class OnboardingMultiWalletModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun isThreeCardsInit(): Boolean {
|
||||
val backupService = backupServiceHolder.backupService.get() ?: return true
|
||||
return when (backupService.currentState) {
|
||||
BackupService.State.FinalizingPrimaryCard,
|
||||
is BackupService.State.FinalizingBackupCard,
|
||||
-> {
|
||||
backupService.addedBackupCardsCount > 1
|
||||
}
|
||||
else -> true
|
||||
}
|
||||
}
|
||||
|
||||
private fun initScreenTitle() {
|
||||
val title = screenTitleByStep(getInitialStep())
|
||||
params.titleProvider.changeTitle(title)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue