Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-02 11:35:43 +03:00
commit f2bf06648f
31 changed files with 453 additions and 103 deletions

View file

@ -4,6 +4,7 @@ import com.tangem.common.routing.AppRouter
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.domain.redux.ReduxStateHolder
import com.tangem.feature.wallet.presentation.router.DefaultWalletRouter
import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles
import com.tangem.features.wallet.navigation.WalletRouter
import dagger.Module
import dagger.Provides
@ -21,7 +22,8 @@ internal object WalletRouterModule {
appRouter: AppRouter,
urlOpener: UrlOpener,
reduxStateHolder: ReduxStateHolder,
onboardingV2FeatureToggles: OnboardingV2FeatureToggles,
): WalletRouter {
return DefaultWalletRouter(appRouter, urlOpener, reduxStateHolder)
return DefaultWalletRouter(appRouter, urlOpener, reduxStateHolder, onboardingV2FeatureToggles)
}
}

View file

@ -17,6 +17,7 @@ import com.tangem.common.routing.AppRoute
import com.tangem.common.routing.AppRoute.ManageTokens.Source
import com.tangem.common.routing.AppRouter
import com.tangem.core.navigation.url.UrlOpener
import com.tangem.domain.models.scan.ScanResponse
import com.tangem.domain.redux.ReduxStateHolder
import com.tangem.domain.redux.StateDialog
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
@ -27,6 +28,7 @@ import com.tangem.feature.wallet.presentation.organizetokens.OrganizeTokensViewM
import com.tangem.feature.wallet.presentation.wallet.ui.WalletScreen
import com.tangem.feature.wallet.presentation.wallet.viewmodels.WalletViewModel
import com.tangem.features.markets.entry.MarketsEntryComponent
import com.tangem.features.onboarding.v2.OnboardingV2FeatureToggles
import kotlin.properties.Delegates
/** Default implementation of wallet feature router */
@ -34,6 +36,7 @@ internal class DefaultWalletRouter(
private val router: AppRouter,
private val urlOpener: UrlOpener,
private val reduxStateHolder: ReduxStateHolder,
private val onboardingV2FeatureToggles: OnboardingV2FeatureToggles,
) : InnerWalletRouter {
private var navController: NavHostController by Delegates.notNull()
@ -106,10 +109,24 @@ internal class DefaultWalletRouter(
)
}
override fun openOnboardingScreen() {
router.push(
AppRoute.OnboardingWallet(canSkipBackup = false),
)
override fun openOnboardingScreen(scanResponse: ScanResponse, continueBackup: Boolean) {
if (onboardingV2FeatureToggles.isOnboardingV2Enabled) {
router.push(
AppRoute.Onboarding(
scanResponse = scanResponse,
startFromBackup = true,
mode = if (continueBackup) {
AppRoute.Onboarding.Mode.AddBackup
} else {
AppRoute.Onboarding.Mode.Onboarding
},
),
)
} else {
router.push(
AppRoute.OnboardingWallet(canSkipBackup = false),
)
}
}
override fun openOnrampSuccessScreen(txId: String) {

View file

@ -2,6 +2,7 @@ package com.tangem.feature.wallet.presentation.router
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import com.tangem.domain.models.scan.ScanResponse
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.features.markets.entry.MarketsEntryComponent
@ -36,7 +37,7 @@ internal interface InnerWalletRouter : WalletRouter {
fun openDetailsScreen(selectedWalletId: UserWalletId)
/** Open onboarding screen */
fun openOnboardingScreen()
fun openOnboardingScreen(scanResponse: ScanResponse, continueBackup: Boolean = false)
/** Open onramp success screen for [txId] */
fun openOnrampSuccessScreen(txId: String)

View file

@ -104,9 +104,13 @@ internal class WalletWarningsClickIntentsImplementor @Inject constructor(
canSkipBackup = false,
),
)
// navigation action shouldn't be out of coroutine to avoid race
router.openOnboardingScreen(
scanResponse = it.scanResponse,
continueBackup = true,
)
}
// navigation action shouldn't be out of coroutine to avoid race
router.openOnboardingScreen()
}
}