Updated on 2026-08-14

This commit is contained in:
Tangem 2024-06-14 15:07:26 +04:00
parent ecf8e5fc96
commit 7846772be2
7 changed files with 25 additions and 17 deletions

View file

@ -26,7 +26,9 @@ private fun handleDisclaimerMiddleware(action: Action, appState: AppState) {
when (action) {
is DisclaimerAction.Show -> {
store.dispatchNavigationAction { push(AppRoute.Disclaimer) }
store.dispatchNavigationAction {
push(AppRoute.Disclaimer(isTosAccepted = action.from == DisclaimerSource.Details))
}
}
is DisclaimerAction.AcceptDisclaimer -> {
mainScope.launch {

View file

@ -33,7 +33,14 @@ sealed class AppRoute(val path: String) : Route, RouteBundleParams {
}
@Serializable
data object Disclaimer : AppRoute(path = "/disclaimer")
data class Disclaimer(
val isTosAccepted: Boolean,
) : AppRoute(path = "/disclaimer${if (isTosAccepted) "/tos_accepted" else ""}") {
companion object {
const val IS_TOS_ACCEPTED_KEY = "isTosAccepted"
}
}
@Serializable
data object OnboardingNote : AppRoute(path = "/onboarding/note")

View file

@ -89,7 +89,7 @@ internal class ItemsBuilder @Inject constructor(
id = "disclaimer",
title = resourceReference(R.string.disclaimer_title),
iconRes = R.drawable.ic_text_24,
onClick = { router.push(AppRoute.Disclaimer) },
onClick = { router.push(AppRoute.Disclaimer(isTosAccepted = true)) },
),
),
)

View file

@ -30,6 +30,7 @@ dependencies {
implementation(projects.core.utils)
implementation(projects.core.featuretoggles)
implementation(projects.core.navigation)
implementation(projects.common.routing)
/** Domain modules */
implementation(projects.domain.models)

View file

@ -5,7 +5,7 @@ import androidx.activity.compose.BackHandler
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.fragment.app.viewModels
import com.tangem.core.navigation.ReduxNavController
import com.tangem.common.routing.AppRouter
import com.tangem.core.ui.UiDependencies
import com.tangem.core.ui.components.SystemBarsEffect
import com.tangem.core.ui.res.TangemTheme
@ -23,7 +23,7 @@ internal class DisclaimerFragment : ComposeFragment() {
override lateinit var uiDependencies: UiDependencies
@Inject
lateinit var reduxNavController: ReduxNavController
lateinit var appRouter: AppRouter
private val viewModel by viewModels<DisclaimerViewModel>()
@ -40,7 +40,7 @@ internal class DisclaimerFragment : ComposeFragment() {
val systemBarsColor = TangemTheme.colors.background.primary
BackHandler {
if (isTosAccepted) {
reduxNavController.popBackStack()
appRouter.pop()
} else {
requireActivity().finish()
}
@ -48,7 +48,7 @@ internal class DisclaimerFragment : ComposeFragment() {
SystemBarsEffect {
setSystemBarsColor(systemBarsColor)
}
DisclaimerScreen(viewModel.state, reduxNavController::popBackStack)
DisclaimerScreen(viewModel.state, appRouter::pop)
}
companion object {

View file

@ -1,6 +1,6 @@
package com.tangem.features.disclaimer.impl.di
import com.tangem.core.navigation.ReduxNavController
import com.tangem.common.routing.AppRouter
import com.tangem.features.disclaimer.api.DisclaimerRouter
import com.tangem.features.disclaimer.impl.navigation.DefaultDisclaimerRouter
import dagger.Module
@ -18,7 +18,7 @@ object DisclaimerRouterModule {
@Provides
@ActivityScoped
fun provideDisclaimerRouter(reduxNavController: ReduxNavController): DisclaimerRouter {
return DefaultDisclaimerRouter(reduxNavController)
fun provideDisclaimerRouter(appRouter: AppRouter): DisclaimerRouter {
return DefaultDisclaimerRouter(appRouter)
}
}

View file

@ -1,14 +1,12 @@
package com.tangem.features.disclaimer.impl.navigation
import androidx.fragment.app.Fragment
import com.tangem.core.navigation.AppScreen
import com.tangem.core.navigation.NavigationAction
import com.tangem.core.navigation.ReduxNavController
import com.tangem.common.routing.AppRoute
import com.tangem.common.routing.AppRouter
import com.tangem.features.disclaimer.impl.DisclaimerFragment
import javax.inject.Inject
internal class DefaultDisclaimerRouter @Inject constructor(
private val reduxNavController: ReduxNavController,
internal class DefaultDisclaimerRouter(
private val appRouter: AppRouter,
) : InnerDisclaimerRouter {
override fun entryFragment(): Fragment = DisclaimerFragment.create()
@ -18,6 +16,6 @@ internal class DefaultDisclaimerRouter @Inject constructor(
}
override fun openHome() {
reduxNavController.navigate(action = NavigationAction.NavigateTo(screen = AppScreen.Home))
appRouter.push(AppRoute.Home)
}
}