Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-30 20:48:10 +03:00
parent 5a8ebb312c
commit 047a48eaf0
12 changed files with 76 additions and 18 deletions

View file

@ -75,7 +75,12 @@ internal class UserWalletSaver @Inject constructor(
private suspend fun Raise<Error>.saveWallet(userWallet: UserWallet) {
fold(
block = { saveWalletUseCase(userWallet).bind() },
block = {
saveWalletUseCase(
userWallet = userWallet,
analyticsSource = AnalyticsParam.ScreensSources.Settings,
).bind()
},
recover = { error ->
when (error) {
is SaveWalletError.WalletAlreadySaved -> {

View file

@ -133,7 +133,10 @@ internal class CreateHardwareWalletModel @Inject constructor(
return
}
saveWalletUseCase(userWallet = userWallet).fold(
saveWalletUseCase(
userWallet = userWallet,
analyticsSource = AnalyticsParam.ScreensSources.AddNew,
).fold(
ifLeft = { saveWalletError ->
delay(HIDE_PROGRESS_DELAY)
setLoading(false)

View file

@ -5,6 +5,7 @@ import arrow.core.getOrElse
import com.tangem.common.CompletionResult
import com.tangem.common.core.TangemSdkError
import com.tangem.common.extensions.ByteArrayKey
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
@ -267,6 +268,7 @@ internal class MultiWalletFinalizeModel @Inject constructor(
scanResponse = scanResponse.updateScanResponseAfterBackup(),
),
canOverride = true,
analyticsSource = AnalyticsParam.ScreensSources.Onboarding,
)
userWalletCreated
}

View file

@ -4,6 +4,7 @@ import androidx.compose.runtime.Stable
import arrow.core.getOrElse
import com.tangem.common.extensions.toHexString
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
@ -173,7 +174,10 @@ internal class OnboardingVisaInProgressModel @Inject constructor(
}
val userWallet = createUserWallet(params.scanResponse, newTokens)
saveWalletUseCase(userWallet)
saveWalletUseCase(
userWallet = userWallet,
analyticsSource = AnalyticsParam.ScreensSources.Onboarding,
)
visaAuthTokenStorage.remove(params.scanResponse.card.cardId)
otpStorage.removeOTP(params.scanResponse.card.cardId)

View file

@ -72,7 +72,7 @@ sealed class WalletScreenAnalyticsEvent {
}
put("Wallet Type", seedPhrase)
},
)
), AppsFlyerIncludedEvent
data class NoticeFinishActivation(
private val activationState: ActivationState,

View file

@ -197,18 +197,20 @@ internal class WelcomeModel @Inject constructor(
onSuccess = { scanResponse ->
val userWallet =
coldUserWalletBuilderFactory.create(scanResponse = scanResponse).build() ?: return@scan
saveWalletUseCase.invoke(userWallet)
.onLeft { error ->
if (error is SaveWalletError.WalletAlreadySaved) {
userWalletsListRepository.unlock(
userWallet.walletId,
unlockMethod = UserWalletsListRepository.UnlockMethod.Scan(scanResponse),
).onRight {
userWalletsListRepository.select(userWallet.walletId)
router.replaceAll(AppRoute.Wallet)
}
saveWalletUseCase.invoke(
userWallet = userWallet,
analyticsSource = AnalyticsParam.ScreensSources.SignIn,
).onLeft { error ->
if (error is SaveWalletError.WalletAlreadySaved) {
userWalletsListRepository.unlock(
userWallet.walletId,
unlockMethod = UserWalletsListRepository.UnlockMethod.Scan(scanResponse),
).onRight {
userWalletsListRepository.select(userWallet.walletId)
router.replaceAll(AppRoute.Wallet)
}
}
}
.onRight {
router.replaceAll(AppRoute.Wallet)
}