From 7846772be2ccdd0e4e25c4e015d0abf0f1420ef9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 14 Jun 2024 15:07:26 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../disclaimer/redux/DisclaimerMiddleware.kt | 4 +++- .../kotlin/com/tangem/common/routing/AppRoute.kt | 9 ++++++++- .../tangem/features/details/utils/ItemsBuilder.kt | 2 +- features/disclaimer/impl/build.gradle.kts | 1 + .../features/disclaimer/impl/DisclaimerFragment.kt | 8 ++++---- .../disclaimer/impl/di/DisclaimerRouterModule.kt | 6 +++--- .../impl/navigation/DefaultDisclaimerRouter.kt | 12 +++++------- 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/disclaimer/redux/DisclaimerMiddleware.kt b/app/src/main/java/com/tangem/tap/features/disclaimer/redux/DisclaimerMiddleware.kt index 20c8df7fa9..60ffa51781 100644 --- a/app/src/main/java/com/tangem/tap/features/disclaimer/redux/DisclaimerMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/disclaimer/redux/DisclaimerMiddleware.kt @@ -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 { diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index f912745220..ebb991332a 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -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") diff --git a/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/ItemsBuilder.kt b/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/ItemsBuilder.kt index 9e87499c97..dbc63d89f5 100644 --- a/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/ItemsBuilder.kt +++ b/features/details/impl/src/main/kotlin/com/tangem/features/details/utils/ItemsBuilder.kt @@ -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)) }, ), ), ) diff --git a/features/disclaimer/impl/build.gradle.kts b/features/disclaimer/impl/build.gradle.kts index bc658e93f3..a2053b346f 100644 --- a/features/disclaimer/impl/build.gradle.kts +++ b/features/disclaimer/impl/build.gradle.kts @@ -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) diff --git a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/DisclaimerFragment.kt b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/DisclaimerFragment.kt index e0a30ce395..fb87182dd5 100644 --- a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/DisclaimerFragment.kt +++ b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/DisclaimerFragment.kt @@ -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() @@ -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 { diff --git a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/di/DisclaimerRouterModule.kt b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/di/DisclaimerRouterModule.kt index 8b3d34e029..cdac031d49 100644 --- a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/di/DisclaimerRouterModule.kt +++ b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/di/DisclaimerRouterModule.kt @@ -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) } } \ No newline at end of file diff --git a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/navigation/DefaultDisclaimerRouter.kt b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/navigation/DefaultDisclaimerRouter.kt index 4860d3265d..a49d4a94c4 100644 --- a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/navigation/DefaultDisclaimerRouter.kt +++ b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/navigation/DefaultDisclaimerRouter.kt @@ -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) } } \ No newline at end of file