Updated on 2026-08-14
This commit is contained in:
commit
f2bf06648f
31 changed files with 453 additions and 103 deletions
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue