Updated on 2026-08-14

This commit is contained in:
Tangem 2024-10-09 09:41:35 +04:00
parent 0a4235ee0a
commit 29de9c017d
8 changed files with 36 additions and 18 deletions

View file

@ -183,11 +183,14 @@ private fun handleWalletAction(action: Action) {
BackupService.State.FinalizingPrimaryCard -> BackupAction.PrepareToWritePrimaryCard
is BackupService.State.FinalizingBackupCard -> BackupAction.PrepareToWriteBackupCard(backupState.index)
else -> {
if (onboardingWalletState.backupState.backupStep == BackupStep.InitBackup ||
if (onboardingWalletState.backupState.backupStep == null ||
onboardingWalletState.backupState.backupStep == BackupStep.InitBackup ||
onboardingWalletState.backupState.backupStep == BackupStep.Finished
) {
Analytics.send(Onboarding.Backup.ScreenOpened())
BackupAction.IntroduceBackup
val isWallet2 = scanResponse?.cardTypesResolver?.isWallet2() ?: false
if (isWallet2) BackupAction.StartBackup else BackupAction.IntroduceBackup
} else {
null
}
@ -520,8 +523,8 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction)
}
is CompletionResult.Failure -> Unit
}
tangemSdkManager.clearProductType()
}
tangemSdkManager.clearProductType()
}
is BackupAction.WriteBackupCard -> {
val cardIndex = if (action.cardNumber > 0) action.cardNumber - 1 else action.cardNumber
@ -557,8 +560,9 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction)
}
}
}
tangemSdkManager.clearProductType()
}
tangemSdkManager.clearProductType()
}
is BackupAction.DiscardBackup -> {
backupService.discardSavedBackup()
@ -679,7 +683,7 @@ internal fun gatherCardIds(backupState: BackupState, card: CardDTO?): List<Strin
private fun handleOnBackPressed(state: OnboardingWalletState) {
when (state.backupState.backupStep) {
BackupStep.InitBackup, BackupStep.ScanOriginCard, BackupStep.AddBackupCards, BackupStep.EnterAccessCode,
null, BackupStep.InitBackup, BackupStep.ScanOriginCard, BackupStep.AddBackupCards, BackupStep.EnterAccessCode,
BackupStep.ReenterAccessCode, BackupStep.SetAccessCode, BackupStep.WritePrimaryCard,
-> {
showInterruptOnboardingDialog()

View file

@ -80,7 +80,7 @@ private object OnboardingWallet2Reducer {
}
private object BackupReducer {
@Suppress("ComplexMethod")
@Suppress("ComplexMethod", "LongMethod")
fun reduce(action: BackupAction, state: BackupState): BackupState {
return when (action) {
is BackupAction.IntroduceBackup -> BackupState(
@ -88,8 +88,20 @@ private object BackupReducer {
maxBackupCards = 2,
canSkipBackup = state.canSkipBackup,
)
BackupAction.StartAddingPrimaryCard -> state.copy(backupStep = BackupStep.ScanOriginCard)
BackupAction.StartAddingBackupCards -> state.copy(backupStep = BackupStep.AddBackupCards)
BackupAction.StartAddingPrimaryCard -> {
state.copy(
backupStep = BackupStep.ScanOriginCard,
maxBackupCards = 2,
canSkipBackup = state.canSkipBackup,
)
}
BackupAction.StartAddingBackupCards -> {
state.copy(
backupStep = BackupStep.AddBackupCards,
maxBackupCards = 2,
canSkipBackup = state.canSkipBackup,
)
}
is BackupAction.AddBackupCard.Success -> {
state.copy(
backupCards = state.backupCards + action.card,

View file

@ -29,6 +29,7 @@ data class OnboardingWalletState(
OnboardingWalletStep.CreateWallet -> 1
OnboardingWalletStep.Backup -> {
when (backupState.backupStep) {
null -> 2
BackupStep.InitBackup -> 2
BackupStep.ScanOriginCard -> 3
BackupStep.AddBackupCards -> 4
@ -74,7 +75,7 @@ data class BackupState(
val backupCardsArtworks: Map<CardId, Bitmap> = emptyMap(),
val accessCode: String = "",
val accessCodeError: AccessCodeError? = null,
val backupStep: BackupStep = BackupStep.InitBackup,
val backupStep: BackupStep? = null,
val maxBackupCards: Int = 2,
val canSkipBackup: Boolean = true,
val isInterruptedBackup: Boolean = false,

View file

@ -249,6 +249,7 @@ class OnboardingWalletFragment :
private fun setBackupState(state: BackupState) {
when (state.backupStep) {
null -> Unit
BackupStep.InitBackup -> showBackupIntro(state)
BackupStep.ScanOriginCard -> showScanOriginCard()
BackupStep.AddBackupCards -> showAddBackupCards(state)
@ -453,7 +454,7 @@ class OnboardingWalletFragment :
} else {
val cardIdFormatter = CardIdFormatter(CardIdDisplayFormat.LastMasked(4))
getString(
R.string.onboarding_subtitle_scan_primary_card_format,
R.string.onboarding_subtitle_scan_backup_card_format,
state.primaryCardId?.let { cardIdFormatter.getFormattedCardId(it) },
)
}