Updated on 2026-08-14
This commit is contained in:
parent
d2c40cfd5c
commit
d220478ceb
2 changed files with 11 additions and 6 deletions
|
|
@ -16,6 +16,7 @@ import com.tangem.domain.models.scan.ScanResponse
|
||||||
import com.tangem.domain.settings.usercountry.models.UserCountry
|
import com.tangem.domain.settings.usercountry.models.UserCountry
|
||||||
import com.tangem.domain.wallets.builder.UserWalletBuilder
|
import com.tangem.domain.wallets.builder.UserWalletBuilder
|
||||||
import com.tangem.domain.wallets.builder.UserWalletIdBuilder
|
import com.tangem.domain.wallets.builder.UserWalletIdBuilder
|
||||||
|
import com.tangem.domain.wallets.models.UserWallet
|
||||||
import com.tangem.tap.common.analytics.converters.ParamCardCurrencyConverter
|
import com.tangem.tap.common.analytics.converters.ParamCardCurrencyConverter
|
||||||
import com.tangem.tap.common.analytics.events.AnalyticsParam
|
import com.tangem.tap.common.analytics.events.AnalyticsParam
|
||||||
import com.tangem.tap.common.analytics.events.Onboarding
|
import com.tangem.tap.common.analytics.events.Onboarding
|
||||||
|
|
@ -91,6 +92,7 @@ object OnboardingHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveWallet(
|
fun saveWallet(
|
||||||
|
alreadyCreatedWallet: UserWallet?,
|
||||||
scanResponse: ScanResponse,
|
scanResponse: ScanResponse,
|
||||||
accessCode: String? = null,
|
accessCode: String? = null,
|
||||||
backupCardsIds: List<String>? = null,
|
backupCardsIds: List<String>? = null,
|
||||||
|
|
@ -120,7 +122,7 @@ object OnboardingHelper {
|
||||||
// When should not save user wallets but device has biometry and save wallet screen has not been shown,
|
// When should not save user wallets but device has biometry and save wallet screen has not been shown,
|
||||||
// then open save wallet screen
|
// then open save wallet screen
|
||||||
tangemSdkManager.checkCanUseBiometry() && settingsRepository.shouldShowSaveUserWalletScreen() -> {
|
tangemSdkManager.checkCanUseBiometry() && settingsRepository.shouldShowSaveUserWalletScreen() -> {
|
||||||
proceedWithScanResponse(scanResponse, backupCardsIds, hasBackupError)
|
proceedWithScanResponse(scanResponse, backupCardsIds, hasBackupError, alreadyCreatedWallet)
|
||||||
|
|
||||||
delay(timeMillis = 1_200)
|
delay(timeMillis = 1_200)
|
||||||
|
|
||||||
|
|
@ -134,7 +136,7 @@ object OnboardingHelper {
|
||||||
}
|
}
|
||||||
// If device has no biometry and save wallet screen has been shown, then go through old scenario
|
// If device has no biometry and save wallet screen has been shown, then go through old scenario
|
||||||
else -> {
|
else -> {
|
||||||
proceedWithScanResponse(scanResponse, backupCardsIds, hasBackupError)
|
proceedWithScanResponse(scanResponse, backupCardsIds, hasBackupError, alreadyCreatedWallet)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -245,9 +247,10 @@ object OnboardingHelper {
|
||||||
scanResponse: ScanResponse,
|
scanResponse: ScanResponse,
|
||||||
backupCardsIds: List<String>?,
|
backupCardsIds: List<String>?,
|
||||||
hasBackupError: Boolean,
|
hasBackupError: Boolean,
|
||||||
|
alreadyCreatedWallet: UserWallet? = null,
|
||||||
) {
|
) {
|
||||||
val walletNameGenerateUseCase = store.inject(DaggerGraphState::generateWalletNameUseCase)
|
val walletNameGenerateUseCase = store.inject(DaggerGraphState::generateWalletNameUseCase)
|
||||||
val userWallet = UserWalletBuilder(scanResponse, walletNameGenerateUseCase)
|
val userWallet = alreadyCreatedWallet ?: UserWalletBuilder(scanResponse, walletNameGenerateUseCase)
|
||||||
.hasBackupError(hasBackupError)
|
.hasBackupError(hasBackupError)
|
||||||
.backupCardsIds(backupCardsIds?.toSet())
|
.backupCardsIds(backupCardsIds?.toSet())
|
||||||
.build()
|
.build()
|
||||||
|
|
|
||||||
|
|
@ -196,11 +196,11 @@ private fun handleWalletAction(action: Action) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleFinishBackup(scanResponse: ScanResponse) {
|
private fun handleFinishBackup(scanResponse: ScanResponse, userWallet: UserWallet? = null) {
|
||||||
val backupState = store.state.onboardingWalletState.backupState
|
val backupState = store.state.onboardingWalletState.backupState
|
||||||
val updatedScanResponse = updateScanResponseAfterBackup(scanResponse, backupState)
|
val updatedScanResponse = updateScanResponseAfterBackup(scanResponse, backupState)
|
||||||
|
|
||||||
val userWalletId = UserWalletIdBuilder.scanResponse(scanResponse).build()
|
val userWalletId = userWallet?.walletId ?: UserWalletIdBuilder.scanResponse(scanResponse).build()
|
||||||
if (backupState.hasRing && userWalletId != null) {
|
if (backupState.hasRing && userWalletId != null) {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
store.inject(DaggerGraphState::walletsRepository).setHasWalletsWithRing(userWalletId = userWalletId)
|
store.inject(DaggerGraphState::walletsRepository).setHasWalletsWithRing(userWalletId = userWalletId)
|
||||||
|
|
@ -208,6 +208,7 @@ private fun handleFinishBackup(scanResponse: ScanResponse) {
|
||||||
}
|
}
|
||||||
|
|
||||||
OnboardingHelper.saveWallet(
|
OnboardingHelper.saveWallet(
|
||||||
|
alreadyCreatedWallet = userWallet,
|
||||||
scanResponse = updatedScanResponse,
|
scanResponse = updatedScanResponse,
|
||||||
accessCode = backupState.accessCode,
|
accessCode = backupState.accessCode,
|
||||||
backupCardsIds = backupState.backupCardIds,
|
backupCardsIds = backupState.backupCardIds,
|
||||||
|
|
@ -667,7 +668,7 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction)
|
||||||
Analytics.send(Onboarding.Finished())
|
Analytics.send(Onboarding.Finished())
|
||||||
|
|
||||||
store.state.globalState.onboardingState.onboardingManager?.finishActivation(notActivatedCardIds)
|
store.state.globalState.onboardingState.onboardingManager?.finishActivation(notActivatedCardIds)
|
||||||
handleFinishBackup(requireNotNull(scanResponse))
|
handleFinishBackup(requireNotNull(scanResponse), userWallet)
|
||||||
delay(1000)
|
delay(1000)
|
||||||
store.dispatchWithMain(BackupAction.BackupFinished(userWalletId = userWallet?.walletId))
|
store.dispatchWithMain(BackupAction.BackupFinished(userWalletId = userWallet?.walletId))
|
||||||
}
|
}
|
||||||
|
|
@ -728,6 +729,7 @@ private suspend fun createUserWallet(scanResponse: ScanResponse, backupState: Ba
|
||||||
return requireNotNull(
|
return requireNotNull(
|
||||||
value = UserWalletBuilder(scanResponse, walletNameGenerateUseCase)
|
value = UserWalletBuilder(scanResponse, walletNameGenerateUseCase)
|
||||||
.backupCardsIds(backupState.backupCardIds.toSet())
|
.backupCardsIds(backupState.backupCardIds.toSet())
|
||||||
|
.hasBackupError(backupState.hasBackupError)
|
||||||
.build(),
|
.build(),
|
||||||
lazyMessage = { "User wallet not created" },
|
lazyMessage = { "User wallet not created" },
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue