Updated on 2026-08-14

This commit is contained in:
Tangem 2025-03-24 11:20:28 +03:00
parent 872df0ecb7
commit 9b4b339b8d
23 changed files with 278 additions and 81 deletions

View file

@ -5,7 +5,14 @@ import com.tangem.core.ui.decompose.ComposableContentComponent
interface OnboardingDoneComponent : ComposableContentComponent {
data class Params(val onDone: () -> Unit)
data class Params(
val mode: Mode,
val onDone: () -> Unit,
)
enum class Mode {
WalletCreated, GoodToGo
}
interface Factory : ComponentFactory<Params, OnboardingDoneComponent>
}

View file

@ -1,7 +1,6 @@
package com.tangem.features.onboarding.v2.done.impl
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.features.onboarding.v2.done.api.OnboardingDoneComponent
@ -18,7 +17,8 @@ internal class DefaultOnboardingDoneComponent @AssistedInject constructor(
@Composable
override fun Content(modifier: Modifier) {
OnboardingDone(
onContinueClick = remember(this) { params.onDone },
mode = params.mode,
onContinueClick = params.onDone,
)
}

View file

@ -20,10 +20,16 @@ import com.tangem.core.ui.components.*
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.features.onboarding.v2.done.api.OnboardingDoneComponent
import com.tangem.features.onboarding.v2.impl.R
@Suppress("LongMethod")
@Composable
internal fun OnboardingDone(onContinueClick: () -> Unit, modifier: Modifier = Modifier) {
internal fun OnboardingDone(
mode: OnboardingDoneComponent.Mode,
onContinueClick: () -> Unit,
modifier: Modifier = Modifier,
) {
val composition by rememberLottieComposition(spec = LottieCompositionSpec.RawRes(R.raw.anim_confetti))
val progress by animateLottieCompositionAsState(composition)
var showConfetti by remember { mutableStateOf(false) }
@ -57,7 +63,12 @@ internal fun OnboardingDone(onContinueClick: () -> Unit, modifier: Modifier = Mo
SpacerH12()
Text(
modifier = Modifier.padding(horizontal = 32.dp),
text = stringResourceSafe(R.string.onboarding_subtitle_success_tangem_wallet_onboarding),
text = when (mode) {
OnboardingDoneComponent.Mode.WalletCreated ->
stringResourceSafe(R.string.onboarding_subtitle_success_tangem_wallet_onboarding)
OnboardingDoneComponent.Mode.GoodToGo ->
stringResourceSafe(R.string.visa_onboarding_success_screen_description)
},
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
@ -100,6 +111,9 @@ internal fun OnboardingDone(onContinueClick: () -> Unit, modifier: Modifier = Mo
@Composable
private fun Preview() {
TangemThemePreview {
OnboardingDone(onContinueClick = {})
OnboardingDone(
mode = OnboardingDoneComponent.Mode.WalletCreated,
onContinueClick = {},
)
}
}

View file

@ -20,6 +20,7 @@ import com.tangem.features.biometry.AskBiometryComponent
import com.tangem.features.biometry.BiometryFeatureToggles
import com.tangem.features.onboarding.v2.TitleProvider
import com.tangem.features.onboarding.v2.common.ui.CantLeaveBackupDialog
import com.tangem.features.onboarding.v2.done.api.OnboardingDoneComponent
import com.tangem.features.onboarding.v2.entry.OnboardingEntryComponent
import com.tangem.features.onboarding.v2.entry.impl.analytics.OnboardingEntryEvent
import com.tangem.features.onboarding.v2.entry.impl.routing.OnboardingRoute
@ -105,7 +106,12 @@ internal class OnboardingEntryModel @Inject constructor(
private fun onMultiWalletOnboardingDone(userWallet: UserWallet) {
when {
params.multiWalletMode == OnboardingEntryComponent.MultiWalletMode.AddBackup -> {
stackNavigation.replaceAll(OnboardingRoute.Done(onDone = ::navigateToWalletScreen))
stackNavigation.replaceAll(
OnboardingRoute.Done(
mode = OnboardingDoneComponent.Mode.WalletCreated,
onDone = ::navigateToWalletScreen,
),
)
}
userWallet.scanResponse.cardTypesResolver.isMultiwalletAllowed() -> {
stackNavigation.replaceAll(OnboardingRoute.ManageTokens(userWallet))
@ -117,34 +123,58 @@ internal class OnboardingEntryModel @Inject constructor(
}
private fun onVisaOnboardingDone() {
navigateToFinalScreenFlow()
navigateToFinalScreenFlow(doneMode = OnboardingDoneComponent.Mode.GoodToGo)
}
private fun navigateToFinalScreenFlow() {
private fun navigateToFinalScreenFlow(
doneMode: OnboardingDoneComponent.Mode = OnboardingDoneComponent.Mode.WalletCreated,
) {
if (askBiometryFeatureToggles.isAskForBiometryEnabled) {
modelScope.launch {
if (tangemSdkManager.checkCanUseBiometry() && settingsRepository.shouldShowSaveUserWalletScreen()) {
stackNavigation.replaceAll(
OnboardingRoute.AskBiometry(modelCallbacks = AskBiometryModelCallbacks()),
OnboardingRoute.AskBiometry(modelCallbacks = AskBiometryModelCallbacks(doneMode)),
)
} else {
stackNavigation.replaceAll(OnboardingRoute.Done(onDone = ::navigateToWalletScreen))
stackNavigation.replaceAll(
OnboardingRoute.Done(
mode = doneMode,
onDone = ::navigateToWalletScreen,
),
)
}
}
} else {
stackNavigation.replaceAll(OnboardingRoute.Done(onDone = ::navigateToWalletScreen))
stackNavigation.replaceAll(
OnboardingRoute.Done(
mode = doneMode,
onDone = ::navigateToWalletScreen,
),
)
}
}
inner class AskBiometryModelCallbacks : AskBiometryComponent.ModelCallbacks {
inner class AskBiometryModelCallbacks(
private val doneMode: OnboardingDoneComponent.Mode,
) : AskBiometryComponent.ModelCallbacks {
override fun onAllowed() {
analyticsEventHandler.send(OnboardingEntryEvent.Biometric(OnboardingEntryEvent.Biometric.State.On))
stackNavigation.replaceAll(OnboardingRoute.Done(onDone = ::navigateToWalletScreen))
stackNavigation.replaceAll(
OnboardingRoute.Done(
mode = doneMode,
onDone = ::navigateToWalletScreen,
),
)
}
override fun onDenied() {
analyticsEventHandler.send(OnboardingEntryEvent.Biometric(OnboardingEntryEvent.Biometric.State.Off))
stackNavigation.replaceAll(OnboardingRoute.Done(onDone = ::navigateToWalletScreen))
stackNavigation.replaceAll(
OnboardingRoute.Done(
mode = doneMode,
onDone = ::navigateToWalletScreen,
),
)
}
}

View file

@ -48,6 +48,7 @@ internal class OnboardingChildFactory @Inject constructor(
is OnboardingRoute.Done -> onboardingDoneComponentFactory.create(
context = childContext,
params = OnboardingDoneComponent.Params(
mode = route.mode,
onDone = route.onDone,
),
)

View file

@ -5,6 +5,7 @@ import com.tangem.domain.models.scan.ScanResponse
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.features.biometry.AskBiometryComponent
import com.tangem.features.onboarding.v2.TitleProvider
import com.tangem.features.onboarding.v2.done.api.OnboardingDoneComponent
import com.tangem.features.onboarding.v2.multiwallet.api.OnboardingMultiWalletComponent
sealed class OnboardingRoute : Route {
@ -40,6 +41,7 @@ sealed class OnboardingRoute : Route {
) : OnboardingRoute()
data class Done(
val mode: OnboardingDoneComponent.Mode,
val onDone: () -> Unit,
) : OnboardingRoute()
}

View file

@ -161,7 +161,7 @@ internal class DefaultOnboardingVisaComponent @AssistedInject constructor(
params = OnboardingVisaOtherWalletComponent.Params(
childParams = childParams,
onDone = {
model.stackNavigation.push(OnboardingVisaRoute.PinCode(activationOrderInfo = it))
model.stackNavigation.pushNew(OnboardingVisaRoute.PinCode(activationOrderInfo = it))
},
),
)
@ -174,7 +174,7 @@ internal class DefaultOnboardingVisaComponent @AssistedInject constructor(
params = OnboardingVisaPinCodeComponent.Params(
childParams = childParams,
onDone = {
model.stackNavigation.push(
model.stackNavigation.pushNew(
OnboardingVisaRoute.InProgress(from = OnboardingVisaRoute.InProgress.From.PinCode),
)
},
@ -190,7 +190,7 @@ internal class DefaultOnboardingVisaComponent @AssistedInject constructor(
params = OnboardingVisaApproveComponent.Params(
childParams = childParams,
onDone = {
model.stackNavigation.push(
model.stackNavigation.pushNew(
OnboardingVisaRoute.InProgress(from = OnboardingVisaRoute.InProgress.From.Approve),
)
},

View file

@ -23,6 +23,7 @@ import com.tangem.core.ui.components.SpacerH
import com.tangem.core.ui.components.SpacerH16
import com.tangem.core.ui.components.SpacerH32
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemAnimations
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
@ -87,9 +88,9 @@ private fun Content(
modifier = Modifier
.padding(horizontal = 32.dp),
text = if (reEnterAccessCodeState) {
"Re-enter your access code" // TODO
stringResourceSafe(R.string.onboarding_access_code_repeat_code_title)
} else {
"Create access code" // TODO
stringResourceSafe(R.string.onboarding_access_code_intro_title)
},
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
@ -98,11 +99,10 @@ private fun Content(
SpacerH16()
// TODO
Text(
modifier = Modifier
.padding(horizontal = 32.dp),
text = "The access code will be used manage your payment account and protect it from unauthorized access",
text = stringResourceSafe(R.string.visa_onboarding_access_code_description),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,

View file

@ -14,7 +14,8 @@ import androidx.compose.ui.unit.dp
import com.tangem.common.ui.navigationButtons.NavigationButton
import com.tangem.common.ui.navigationButtons.NavigationPrimaryButton
import com.tangem.core.ui.components.SpacerH
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.features.onboarding.v2.impl.R
@ -43,7 +44,7 @@ internal fun OnboardingVisaApprove(state: OnboardingVisaApproveUM, modifier: Mod
SpacerH(86.dp)
Text(
text = "Prepare Tangem Wallet",
text = stringResourceSafe(R.string.visa_onboarding_tangem_approve_title),
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
textAlign = TextAlign.Center,
@ -52,7 +53,7 @@ internal fun OnboardingVisaApprove(state: OnboardingVisaApproveUM, modifier: Mod
SpacerH(12.dp)
Text(
text = "Prepare the Tangem card\nand tap to approve",
text = stringResourceSafe(R.string.visa_onboarding_tangem_approve_description),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
@ -65,7 +66,7 @@ internal fun OnboardingVisaApprove(state: OnboardingVisaApproveUM, modifier: Mod
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
.fillMaxWidth(),
primaryButton = NavigationButton(
textReference = TextReference.Str("Approve"),
textReference = resourceReference(R.string.common_approve),
iconRes = R.drawable.ic_tangem_24,
isIconVisible = true,
showProgress = state.approveButtonLoading,

View file

@ -3,7 +3,7 @@ package com.tangem.features.onboarding.v2.visa.impl.child.choosewallet.model
import androidx.compose.runtime.Stable
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.features.onboarding.v2.impl.R
import com.tangem.features.onboarding.v2.visa.impl.child.choosewallet.OnboardingVisaChooseWalletComponent.Params.Event
import com.tangem.features.onboarding.v2.visa.impl.child.choosewallet.ui.state.OnboardingVisaChooseWalletUM
@ -32,7 +32,7 @@ internal class OnboardingVisaChooseWalletModel @Inject constructor(
val selectedOption = SelectableChainRowUM(
event = Event.TangemWallet,
icon = R.drawable.ic_tangem_24,
text = TextReference.Str("Tangem Wallet"),
text = resourceReference(R.string.common_tangem_wallet),
)
return OnboardingVisaChooseWalletUM(
@ -41,7 +41,7 @@ internal class OnboardingVisaChooseWalletModel @Inject constructor(
SelectableChainRowUM(
event = Event.OtherWallet,
icon = R.drawable.ic_wallet_filled_24,
text = TextReference.Str("Other Wallet"),
text = resourceReference(R.string.visa_onboarding_other_wallet),
),
),
selectedOption = selectedOption,

View file

@ -21,6 +21,8 @@ import com.tangem.core.ui.components.rows.RowContentContainer
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.outsetBorder
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.features.onboarding.v2.impl.R
@ -45,10 +47,7 @@ internal fun OnboardingVisaChooseWallet(state: OnboardingVisaChooseWalletUM, mod
) {
Notification(
config = NotificationConfig(
subtitle = TextReference.Str(
"Please choose the wallet you started the registration" +
" process with to sign the transaction for creating your account on the Blockchain.",
),
subtitle = resourceReference(R.string.visa_onboarding_approve_wallet_selector_notification_message),
iconResId = R.drawable.ic_alert_circle_24,
),
iconTint = TangemTheme.colors.icon.accent,
@ -62,7 +61,7 @@ internal fun OnboardingVisaChooseWallet(state: OnboardingVisaChooseWalletUM, mod
start = 12.dp,
end = 12.dp,
),
text = "Choose wallet",
text = stringResourceSafe(R.string.visa_onboarding_wallet_list_header),
style = TangemTheme.typography.subtitle2,
color = TangemTheme.colors.text.tertiary,
)
@ -79,7 +78,7 @@ internal fun OnboardingVisaChooseWallet(state: OnboardingVisaChooseWalletUM, mod
.imePadding()
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
.fillMaxWidth(),
text = "Continue",
text = stringResourceSafe(R.string.common_continue),
onClick = state.onContinueClick,
)
}

View file

@ -68,10 +68,10 @@ internal class OnboardingVisaOtherWalletModel @Inject constructor(
}
private fun onShareClicked() {
shareManager.shareText("https://tangem.com/")
shareManager.shareText("https://tangem.com/") // TODO
}
private fun onOpenInBrowserClicked() {
urlOpener.openUrl("https://tangem.com/")
urlOpener.openUrl("https://tangem.com/") // TODO
}
}

View file

@ -16,6 +16,7 @@ import androidx.compose.ui.unit.dp
import com.tangem.core.ui.components.PrimaryButton
import com.tangem.core.ui.components.SecondaryButton
import com.tangem.core.ui.components.SpacerH12
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.features.onboarding.v2.impl.R
@ -44,7 +45,7 @@ internal fun OnboardingVisaOtherWallet(state: OnboardingVisaOtherWalletUM, modif
SpacerH12()
Text(
text = "Go to Website",
text = stringResourceSafe(R.string.visa_onboarding_wallet_connect_title),
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
textAlign = TextAlign.Center,
@ -53,9 +54,7 @@ internal fun OnboardingVisaOtherWallet(state: OnboardingVisaOtherWalletUM, modif
SpacerH12()
Text(
text = "You will be able to complete your connection \n" +
"on the third-party web-site \n" +
"and back to the Tangem app",
text = stringResourceSafe(R.string.visa_onboarding_wallet_connect_description),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
@ -68,7 +67,7 @@ internal fun OnboardingVisaOtherWallet(state: OnboardingVisaOtherWalletUM, modif
modifier = Modifier
.padding(horizontal = 16.dp)
.fillMaxWidth(),
text = "Open in Browser",
text = stringResourceSafe(R.string.common_open_in_browser),
onClick = state.onOpenInBrowserClick,
)
@ -78,7 +77,7 @@ internal fun OnboardingVisaOtherWallet(state: OnboardingVisaOtherWalletUM, modif
modifier = Modifier
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
.fillMaxWidth(),
text = "Share Link",
text = stringResourceSafe(R.string.common_share_link),
onClick = state.onOpenInBrowserClick,
)
}

View file

@ -5,7 +5,7 @@ import com.tangem.common.extensions.toHexString
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.datasource.local.visa.VisaAuthTokenStorage
import com.tangem.domain.models.scan.ScanResponse
import com.tangem.domain.visa.SetVisaPinCodeUseCase
@ -14,6 +14,7 @@ import com.tangem.domain.visa.model.VisaCardId
import com.tangem.domain.wallets.builder.UserWalletBuilder
import com.tangem.domain.wallets.legacy.UserWalletsListManager
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.features.onboarding.v2.impl.R
import com.tangem.features.onboarding.v2.visa.impl.child.pincode.OnboardingVisaPinCodeComponent
import com.tangem.features.onboarding.v2.visa.impl.child.pincode.ui.state.OnboardingVisaPinCodeUM
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
@ -64,7 +65,11 @@ internal class OnboardingVisaPinCodeModel @Inject constructor(
it.copy(
pinCode = pin,
submitButtonEnabled = PinCodeValidation.validate(pin),
error = if (isError) stringReference("Invalid PIN: avoid sequences or repeats") else null,
error = if (isError) {
resourceReference(R.string.visa_onboarding_pin_validation_error_message)
} else {
null
},
)
}
}
@ -117,8 +122,4 @@ internal class OnboardingVisaPinCodeModel @Inject constructor(
lazyMessage = { "User wallet not created" },
)
}
private companion object {
const val PIN_CODE_LENGTH = 4
}
}

View file

@ -33,11 +33,13 @@ import com.tangem.common.ui.navigationButtons.NavigationPrimaryButton
import com.tangem.core.ui.components.SpacerH
import com.tangem.core.ui.components.SpacerH16
import com.tangem.core.ui.components.SpacerH4
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.features.onboarding.v2.impl.R
import com.tangem.features.onboarding.v2.visa.impl.child.pincode.ui.state.OnboardingVisaPinCodeUM
import kotlinx.coroutines.delay
@ -57,7 +59,7 @@ internal fun OnboardingVisaPinCode(state: OnboardingVisaPinCodeUM, modifier: Mod
horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(
text = "Create\nPIN Code",
text = stringResourceSafe(R.string.visa_onboarding_pin_code_title),
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
textAlign = TextAlign.Center,
@ -66,7 +68,7 @@ internal fun OnboardingVisaPinCode(state: OnboardingVisaPinCodeUM, modifier: Mod
SpacerH16()
Text(
text = "Set up a 4-digit code.\nIt will be used for payments.",
text = stringResourceSafe(R.string.visa_onboarding_pin_code_description),
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
textAlign = TextAlign.Center,
@ -83,7 +85,7 @@ internal fun OnboardingVisaPinCode(state: OnboardingVisaPinCodeUM, modifier: Mod
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
.fillMaxWidth(),
primaryButton = NavigationButton(
textReference = TextReference.Str("Submit"),
textReference = resourceReference(R.string.common_submit),
onClick = state.onSubmitClick,
showProgress = state.submitButtonLoading,
isEnabled = state.submitButtonEnabled,

View file

@ -16,6 +16,7 @@ import com.tangem.core.ui.components.PrimaryButton
import com.tangem.core.ui.components.PrimaryButtonIconEnd
import com.tangem.core.ui.components.SpacerH
import com.tangem.core.ui.components.SpacerH12
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.features.onboarding.v2.impl.R
@ -47,8 +48,10 @@ internal fun OnboardingVisaWelcome(state: OnboardingVisaWelcomeUM, modifier: Mod
Text(
text = when (state.mode) {
OnboardingVisaWelcomeUM.Mode.Hello -> "Hello, ${state.userName}!"
OnboardingVisaWelcomeUM.Mode.WelcomeBack -> "Welcome back, ${state.userName}!"
OnboardingVisaWelcomeUM.Mode.Hello ->
stringResourceSafe(R.string.visa_onboarding_welcome_title)
OnboardingVisaWelcomeUM.Mode.WelcomeBack ->
stringResourceSafe(R.string.visa_onboarding_welcome_back_title)
},
style = TangemTheme.typography.h2,
color = TangemTheme.colors.text.primary1,
@ -58,8 +61,10 @@ internal fun OnboardingVisaWelcome(state: OnboardingVisaWelcomeUM, modifier: Mod
Text(
text = when (state.mode) {
OnboardingVisaWelcomeUM.Mode.Hello -> "bla bla bla //TODO"
OnboardingVisaWelcomeUM.Mode.WelcomeBack -> "bla bla bla? //TODO"
OnboardingVisaWelcomeUM.Mode.Hello ->
stringResourceSafe(R.string.visa_onboarding_welcome_description)
OnboardingVisaWelcomeUM.Mode.WelcomeBack ->
stringResourceSafe(R.string.visa_onboarding_welcome_back_description)
},
style = TangemTheme.typography.body1,
color = TangemTheme.colors.text.secondary,
@ -72,7 +77,7 @@ internal fun OnboardingVisaWelcome(state: OnboardingVisaWelcomeUM, modifier: Mod
modifier = Modifier
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
.fillMaxWidth(),
text = "Start Activation",
text = stringResourceSafe(R.string.visa_onboarding_welcome_button_title),
onClick = state.onContinueClick,
)
}
@ -81,7 +86,7 @@ internal fun OnboardingVisaWelcome(state: OnboardingVisaWelcomeUM, modifier: Mod
modifier = Modifier
.padding(start = 16.dp, end = 16.dp, bottom = 16.dp)
.fillMaxWidth(),
text = "Continue Activation",
text = stringResourceSafe(R.string.visa_onboarding_welcome_back_button_title),
showProgress = state.continueButtonLoading,
iconResId = R.drawable.ic_tangem_24,
onClick = state.onContinueClick,

View file

@ -2,7 +2,6 @@ package com.tangem.features.onboarding.v2.visa.impl.child.welcome.ui.state
internal data class OnboardingVisaWelcomeUM(
val mode: Mode = Mode.Hello,
val userName: String = "",
val continueButtonLoading: Boolean = false,
val onContinueClick: () -> Unit = {},
) {

View file

@ -1,16 +1,22 @@
package com.tangem.features.onboarding.v2.visa.impl.route
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.features.onboarding.v2.impl.R
// TODO add translations [REDACTED_TASK_KEY]
internal fun OnboardingVisaRoute.screenTitle(): TextReference = when (this) {
OnboardingVisaRoute.AccessCode -> TextReference.Str("Access code")
is OnboardingVisaRoute.ChooseWallet -> TextReference.Str("Account activation")
is OnboardingVisaRoute.InProgress -> TextReference.Str("In progress")
is OnboardingVisaRoute.OtherWalletApproveOption -> TextReference.Str("Wallet connection")
is OnboardingVisaRoute.PinCode -> TextReference.Str("PIN code")
is OnboardingVisaRoute.TangemWalletApproveOption -> TextReference.Str("Wallet connection")
OnboardingVisaRoute.AccessCode ->
resourceReference(R.string.visa_onboarding_access_code_navigation_title)
is OnboardingVisaRoute.ChooseWallet ->
resourceReference(R.string.visa_onboarding_account_activation_navigation_title)
is OnboardingVisaRoute.InProgress ->
resourceReference(R.string.common_in_progress)
is OnboardingVisaRoute.OtherWalletApproveOption,
is OnboardingVisaRoute.TangemWalletApproveOption,
-> resourceReference(R.string.visa_onboarding_wallet_connection_navigation_title)
is OnboardingVisaRoute.PinCode ->
resourceReference(R.string.visa_onboarding_pin_code_navigation_title)
is OnboardingVisaRoute.Welcome,
is OnboardingVisaRoute.WelcomeBack,
-> TextReference.Str("Getting started")
-> resourceReference(R.string.onboarding_getting_started)
}

View file

@ -1,9 +0,0 @@
package com.tangem.features.onboarding.v2.visa.impl.ui
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@Composable
internal fun OnboardingVisa(modifier: Modifier = Modifier, childContent: @Composable (Modifier) -> Unit) {
childContent(modifier)
}