From a4a99020b648a5fa48bbaa68f51ff8f384e94c86 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 24 Oct 2023 15:34:22 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../redux/OnboardingWalletMiddleware.kt | 37 ++++++++++++++++++- gradle/dependencies.toml | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) 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 f76de961e7..e5238a1788 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 @@ -5,6 +5,8 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.common.CompletionResult import com.tangem.common.core.TangemSdkError import com.tangem.common.extensions.ifNotNull +import com.tangem.common.extensions.toHexString +import com.tangem.common.services.Result import com.tangem.core.analytics.Analytics import com.tangem.core.navigation.AppScreen import com.tangem.core.navigation.NavigationAction @@ -18,6 +20,7 @@ import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.userwallets.Artwork import com.tangem.feature.onboarding.data.model.CreateWalletResponse import com.tangem.feature.onboarding.presentation.wallet2.analytics.SeedPhraseSource +import com.tangem.operations.attestation.OnlineCardVerifier import com.tangem.operations.backup.BackupService import com.tangem.tap.* import com.tangem.tap.common.analytics.events.AnalyticsParam @@ -93,7 +96,21 @@ private fun handleWalletAction(action: Action) { is OnboardingWalletAction.LoadArtwork -> { scope.launch { val cardArtwork = when (onboardingManager) { - null -> action.cardArtworkUriForUnfinishedBackup + null -> { + // onboardingManager is null when backup started from previously interrupted + val primaryCardId = backupService.primaryCardId + val cardPublicKey = backupService.primaryPublicKey + if (primaryCardId != null && cardPublicKey != null) { + // uses when no scanResponse and backup state restored + loadArtworkForUnfinishedBackup( + cardId = primaryCardId, + cardPublicKey = cardPublicKey, + defaultArtwork = action.cardArtworkUriForUnfinishedBackup, + ) + } else { + action.cardArtworkUriForUnfinishedBackup + } + } else -> onboardingManager.loadArtworkUrl() .takeIf { it != Artwork.DEFAULT_IMG_URL } ?.let { Uri.parse(it) } @@ -186,6 +203,24 @@ private fun handleWalletAction(action: Action) { } } +private suspend fun loadArtworkForUnfinishedBackup( + cardId: String, + cardPublicKey: ByteArray, + defaultArtwork: Uri?, +): Uri { + return when (val cardInfo = OnlineCardVerifier().getCardInfo(cardId, cardPublicKey)) { + is Result.Success -> { + val artworkId = cardInfo.data.artwork?.id + if (artworkId.isNullOrEmpty()) { + defaultArtwork ?: Uri.EMPTY + } else { + Uri.parse(OnlineCardVerifier.getUrlForArtwork(cardId, cardPublicKey.toHexString(), artworkId)) + } + } + is Result.Failure -> defaultArtwork ?: Uri.EMPTY + } +} + @Suppress("LongMethod", "ComplexMethod") private fun handleWallet2Action(action: OnboardingWallet2Action) { val globalState = store.state.globalState diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 3b52258884..62477a6c9c 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -85,7 +85,7 @@ spr-client = "3.6.2" # region Tangem tangemBlockchainSdk = "release-app_5.0-363" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "release-app_5.0-307" +tangemCardSdk = "release-app_5.0-308" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds # endregion Tangem