Updated on 2026-08-14
This commit is contained in:
parent
32c24c5cd0
commit
c9b3b3f555
6 changed files with 27 additions and 29 deletions
|
|
@ -17,8 +17,8 @@ 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.biometry.impl.ui.state.AskBiometryUM
|
||||
import com.tangem.features.biometry.R
|
||||
import com.tangem.features.biometry.impl.ui.state.AskBiometryUM
|
||||
|
||||
@Composable
|
||||
internal fun AskBiometry(state: AskBiometryUM, modifier: Modifier = Modifier) {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
package com.tangem.features.onboarding.v2.multiwallet.impl.child.finalize.model
|
||||
package com.tangem.features.onboarding.v2.common.ui
|
||||
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.message.DialogMessage
|
||||
import com.tangem.core.ui.message.EventMessageAction
|
||||
import com.tangem.features.onboarding.v2.impl.R
|
||||
|
||||
internal val CantLeaveFinalizeDialog: DialogMessage = DialogMessage(
|
||||
internal val CantLeaveBackupDialog: DialogMessage = DialogMessage(
|
||||
message = resourceReference(R.string.onboarding_backup_exit_warning),
|
||||
firstAction = EventMessageAction(
|
||||
title = resourceReference(R.string.warning_button_ok),
|
||||
|
|
@ -53,7 +53,7 @@ internal class DefaultOnboardingEntryComponent @AssistedInject constructor(
|
|||
popBack = {
|
||||
popInternal { success ->
|
||||
if (success.not()) {
|
||||
model.stackNavigation.pop()
|
||||
model.onBack()
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -113,15 +113,15 @@ internal class DefaultOnboardingEntryComponent @AssistedInject constructor(
|
|||
stepperComponent.state.update {
|
||||
it.copy(
|
||||
currentStep = when (stack.active.configuration) {
|
||||
is OnboardingRoute.AskBiometry -> 7
|
||||
is OnboardingRoute.ManageTokens -> 8
|
||||
is OnboardingRoute.ManageTokens -> 7
|
||||
is OnboardingRoute.AskBiometry -> 8
|
||||
is OnboardingRoute.Done -> 9
|
||||
else -> error("Unsupported route")
|
||||
},
|
||||
steps = 9,
|
||||
title = when (stack.active.configuration) {
|
||||
is OnboardingRoute.AskBiometry -> resourceReference(R.string.onboarding_navbar_save_wallet)
|
||||
is OnboardingRoute.ManageTokens -> resourceReference(R.string.main_manage_tokens)
|
||||
is OnboardingRoute.AskBiometry -> resourceReference(R.string.onboarding_navbar_save_wallet)
|
||||
is OnboardingRoute.Done -> resourceReference(R.string.onboarding_done_header)
|
||||
else -> error("Unsupported route")
|
||||
},
|
||||
|
|
@ -144,8 +144,7 @@ internal class DefaultOnboardingEntryComponent @AssistedInject constructor(
|
|||
override fun Content(modifier: Modifier) {
|
||||
val innerStackState by innerStack.subscribeAsState()
|
||||
|
||||
// prevent back navigation
|
||||
BackHandler { }
|
||||
BackHandler { model.onBack() }
|
||||
|
||||
OnboardingEntry(
|
||||
modifier = modifier,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ 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.decompose.navigation.Router
|
||||
import com.tangem.core.decompose.ui.UiMessageSender
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.domain.common.util.cardTypesResolver
|
||||
|
|
@ -18,6 +19,7 @@ import com.tangem.domain.wallets.models.UserWallet
|
|||
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.entry.OnboardingEntryComponent
|
||||
import com.tangem.features.onboarding.v2.entry.impl.analytics.OnboardingEntryEvent
|
||||
import com.tangem.features.onboarding.v2.entry.impl.routing.OnboardingRoute
|
||||
|
|
@ -40,6 +42,7 @@ internal class OnboardingEntryModel @Inject constructor(
|
|||
private val settingsRepository: SettingsRepository,
|
||||
private val askBiometryFeatureToggles: BiometryFeatureToggles,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
private val uiMessageSender: UiMessageSender,
|
||||
) : Model() {
|
||||
|
||||
private val params = paramsContainer.require<OnboardingEntryComponent.Params>()
|
||||
|
|
@ -54,6 +57,14 @@ internal class OnboardingEntryModel @Inject constructor(
|
|||
|
||||
val startRoute = routeByProductType(params.scanResponse)
|
||||
|
||||
fun onManageTokensDone() {
|
||||
navigateToFinalScreenFlow()
|
||||
}
|
||||
|
||||
fun onBack() {
|
||||
uiMessageSender.send(CantLeaveBackupDialog)
|
||||
}
|
||||
|
||||
private fun routeByProductType(scanResponse: ScanResponse): OnboardingRoute {
|
||||
val multiWalletNavigationMode = when (params.multiWalletMode) {
|
||||
OnboardingEntryComponent.MultiWalletMode.Onboarding -> OnboardingMultiWalletComponent.Mode.Onboarding
|
||||
|
|
@ -105,10 +116,6 @@ internal class OnboardingEntryModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun onManageTokensDone() {
|
||||
navigateToFinalScreenFlow()
|
||||
}
|
||||
|
||||
private fun onVisaOnboardingDone() {
|
||||
navigateToFinalScreenFlow()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import com.tangem.domain.wallets.legacy.UserWalletsListManager
|
|||
import com.tangem.domain.wallets.models.UserWallet
|
||||
import com.tangem.domain.wallets.repository.WalletsRepository
|
||||
import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase
|
||||
import com.tangem.features.onboarding.v2.common.ui.CantLeaveBackupDialog
|
||||
import com.tangem.features.onboarding.v2.impl.R
|
||||
import com.tangem.features.onboarding.v2.multiwallet.api.OnboardingMultiWalletComponent
|
||||
import com.tangem.features.onboarding.v2.multiwallet.impl.child.MultiWalletChildParams
|
||||
|
|
@ -96,7 +97,7 @@ internal class MultiWalletFinalizeModel @Inject constructor(
|
|||
if (uiState.value.scanPrimary) {
|
||||
modelScope.launch { onBackFlow.emit(Unit) }
|
||||
} else {
|
||||
uiMessageSender.send(CantLeaveFinalizeDialog)
|
||||
uiMessageSender.send(CantLeaveBackupDialog)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,10 +5,9 @@ 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.decompose.navigation.Router
|
||||
import com.tangem.datasource.local.preferences.AppPreferencesStore
|
||||
import com.tangem.datasource.local.preferences.PreferencesKeys
|
||||
import com.tangem.domain.models.scan.CardDTO
|
||||
import com.tangem.domain.models.scan.ProductType
|
||||
import com.tangem.domain.onboarding.repository.OnboardingRepository
|
||||
import com.tangem.domain.wallets.usecase.GetCardImageUseCase
|
||||
import com.tangem.features.onboarding.v2.multiwallet.api.OnboardingMultiWalletComponent
|
||||
import com.tangem.features.onboarding.v2.multiwallet.impl.analytics.OnboardingEvent
|
||||
|
|
@ -30,7 +29,7 @@ internal class OnboardingMultiWalletModel @Inject constructor(
|
|||
private val router: Router,
|
||||
private val analyticsHandler: AnalyticsEventHandler,
|
||||
private val backupServiceHolder: BackupServiceHolder,
|
||||
private val appPreferencesStore: AppPreferencesStore,
|
||||
private val onboardingRepository: OnboardingRepository,
|
||||
) : Model() {
|
||||
private val params = paramsContainer.require<OnboardingMultiWalletComponent.Params>()
|
||||
private val getCardImageUseCase = GetCardImageUseCase()
|
||||
|
|
@ -61,8 +60,10 @@ internal class OnboardingMultiWalletModel @Inject constructor(
|
|||
st.copy(
|
||||
dialog = interruptBackupDialog(
|
||||
onConfirm = {
|
||||
removeFinalizeScanResponseState()
|
||||
router.pop()
|
||||
modelScope.launch {
|
||||
onboardingRepository.clearUnfinishedFinalizeOnboarding()
|
||||
router.pop()
|
||||
}
|
||||
},
|
||||
dismiss = { _uiState.update { it.copy(dialog = null) } },
|
||||
),
|
||||
|
|
@ -70,16 +71,6 @@ internal class OnboardingMultiWalletModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun removeFinalizeScanResponseState() {
|
||||
// discarding onboarding means we have to remove scan response from preferences
|
||||
// to prevent showing finalize screen dialog on next app start
|
||||
modelScope.launch {
|
||||
appPreferencesStore.editData { mutablePreferences ->
|
||||
mutablePreferences.remove(PreferencesKeys.ONBOARDING_FINALIZE_SCAN_RESPONSE_KEY)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun subscribeToBackups() {
|
||||
modelScope.launch {
|
||||
backups.collectLatest { backup ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue