Updated on 2026-08-14

This commit is contained in:
Tangem 2023-09-11 10:33:31 +03:00
commit be02ae3fa3
91 changed files with 577 additions and 296 deletions

View file

@ -23,10 +23,18 @@ sealed class SeedPhraseEvents(
}
}
object OnboardingSeedButtonOtherOptions : AnalyticsEvent(
category = "Onboarding / Create Wallet",
event = "Button - Other Options",
)
sealed class CreateWalletEvents(
event: String,
params: Map<String, String> = mapOf(),
) : AnalyticsEvent(ONBOARDING_CREATE_WALLET, event, params) {
object OnboardingSeedButtonCreateWallet : CreateWalletEvents("Button - Create Wallet")
object OnboardingSeedButtonOtherOptions : CreateWalletEvents("Button - Other Options")
companion object {
const val ONBOARDING_CREATE_WALLET = "Onboarding / Create Wallet"
}
}
enum class SeedPhraseSource {
IMPORTED, GENERATED

View file

@ -79,6 +79,13 @@ class StateBuilder(
onBackClick = uiActions.menuNavigateBackClick,
)
fun setCardArtwork(uiState: OnboardingSeedPhraseState, cardArtwork: String): OnboardingSeedPhraseState =
uiState.copy(
introState = uiState.introState.copy(
cardImageUrl = cardArtwork,
),
)
fun generateMnemonicComponents(uiState: OnboardingSeedPhraseState): OnboardingSeedPhraseState {
return uiState.copy(
aboutState = uiState.aboutState.copy(

View file

@ -13,7 +13,7 @@ import com.tangem.data.common.locale.LocaleProvider
import com.tangem.feature.onboarding.data.model.CreateWalletResponse
import com.tangem.feature.onboarding.domain.SeedPhraseError
import com.tangem.feature.onboarding.domain.SeedPhraseInteractor
import com.tangem.feature.onboarding.presentation.wallet2.analytics.OnboardingSeedButtonOtherOptions
import com.tangem.feature.onboarding.presentation.wallet2.analytics.CreateWalletEvents
import com.tangem.feature.onboarding.presentation.wallet2.analytics.SeedPhraseEvents
import com.tangem.feature.onboarding.presentation.wallet2.analytics.SeedPhraseSource
import com.tangem.feature.onboarding.presentation.wallet2.model.*
@ -88,10 +88,11 @@ class SeedPhraseViewModel @Inject constructor(
router.currentScreen.onEach { screen ->
when (screen) {
SeedPhraseScreen.Intro -> {
analyticsEventHandler.send(SeedPhraseEvents.IntroScreenOpened)
/* no-op */
}
SeedPhraseScreen.AboutSeedPhrase -> {
analyticsEventHandler.send(SeedPhraseEvents.IntroScreenOpened)
mediator.allowScreenshots(true)
}
@ -116,6 +117,12 @@ class SeedPhraseViewModel @Inject constructor(
this.mediator = mediator
}
fun setCardArtworkUri(cardArtworkUri: String) {
if (uiState.introState.cardImageUrl != cardArtworkUri) {
uiState = uiBuilder.setCardArtwork(uiState, cardArtworkUri)
}
}
private fun createUiActions(): UiActions = UiActions(
introActions = IntroUiAction(
buttonCreateWalletClick = ::buttonCreateWalletClick,
@ -265,6 +272,7 @@ class SeedPhraseViewModel @Inject constructor(
// region ButtonClickHandlers
private fun buttonCreateWalletClick() {
viewModelScope.launch(dispatchers.io) {
analyticsEventHandler.send(CreateWalletEvents.OnboardingSeedButtonCreateWallet)
mediator.createWallet(::handleWalletCreationResult)
}
}
@ -299,7 +307,7 @@ class SeedPhraseViewModel @Inject constructor(
}
private fun buttonOtherOptionsClick() {
analyticsEventHandler.send(OnboardingSeedButtonOtherOptions)
analyticsEventHandler.send(CreateWalletEvents.OnboardingSeedButtonOtherOptions)
router.openScreen(SeedPhraseScreen.AboutSeedPhrase)
}
@ -368,7 +376,6 @@ class SeedPhraseViewModel @Inject constructor(
}
private fun buttonContinueClick() {
analyticsEventHandler.send(SeedPhraseEvents.CheckingScreenOpened)
router.openScreen(SeedPhraseScreen.CheckSeedPhrase)
}