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 20d08dcf6a..6cd73dfcb0 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 @@ -35,14 +35,7 @@ sealed class AppRoute(val path: String) : Route { @Serializable data class Disclaimer( val isTosAccepted: Boolean, - ) : AppRoute(path = "/disclaimer${if (isTosAccepted) "/tos_accepted" else ""}"), RouteBundleParams { - - override fun getBundle(): Bundle = bundle(serializer()) - - companion object { - const val IS_TOS_ACCEPTED_KEY = "isTosAccepted" - } - } + ) : AppRoute(path = "/disclaimer${if (isTosAccepted) "/tos_accepted" else ""}") @Serializable data object OnboardingNote : AppRoute(path = "/onboarding/note") diff --git a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/component/impl/DefaultDisclaimerComponent.kt b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/component/impl/DefaultDisclaimerComponent.kt index f281084c55..5fbd86f488 100644 --- a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/component/impl/DefaultDisclaimerComponent.kt +++ b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/component/impl/DefaultDisclaimerComponent.kt @@ -7,7 +7,6 @@ import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel -import com.tangem.core.navigation.finisher.AppFinisher import com.tangem.features.disclaimer.api.components.DisclaimerComponent import com.tangem.features.disclaimer.impl.model.DisclaimerModel import com.tangem.features.disclaimer.impl.ui.DisclaimerScreen @@ -18,7 +17,6 @@ import dagger.assisted.AssistedInject internal class DefaultDisclaimerComponent @AssistedInject constructor( @Assisted context: AppComponentContext, @Assisted private val params: DisclaimerComponent.Params, - private val appFinisher: AppFinisher, ) : DisclaimerComponent, AppComponentContext by context { private val model: DisclaimerModel = getOrCreateModel(params) @@ -27,13 +25,7 @@ internal class DefaultDisclaimerComponent @AssistedInject constructor( override fun Content(modifier: Modifier) { val state by model.state.collectAsStateWithLifecycle() - BackHandler { - if (params.isTosAccepted) { - state.popBack() - } else { - appFinisher.finish() - } - } + BackHandler(onBack = state.popBack) DisclaimerScreen(state = state) } diff --git a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/model/DisclaimerModel.kt b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/model/DisclaimerModel.kt index f1be4240e0..e2dffb37f3 100644 --- a/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/model/DisclaimerModel.kt +++ b/features/disclaimer/impl/src/main/java/com/tangem/features/disclaimer/impl/model/DisclaimerModel.kt @@ -5,6 +5,7 @@ import com.tangem.core.decompose.di.ComponentScoped 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.navigation.finisher.AppFinisher import com.tangem.domain.card.repository.CardRepository import com.tangem.domain.settings.NeverRequestPermissionUseCase import com.tangem.domain.settings.NeverToInitiallyAskPermissionUseCase @@ -17,12 +18,14 @@ import kotlinx.coroutines.launch import javax.inject.Inject @ComponentScoped +@Suppress("LongParameterList") internal class DisclaimerModel @Inject constructor( + override val dispatchers: CoroutineDispatcherProvider, private val cardRepository: CardRepository, private val router: Router, - override val dispatchers: CoroutineDispatcherProvider, private val neverToInitiallyAskPermissionUseCase: NeverToInitiallyAskPermissionUseCase, private val neverRequestPermissionUseCase: NeverRequestPermissionUseCase, + private val appFinisher: AppFinisher, paramsContainer: ParamsContainer, ) : Model() { @@ -33,23 +36,34 @@ internal class DisclaimerModel @Inject constructor( onAccept = ::onAccept, url = DISCLAIMER_URL, isTosAccepted = params.isTosAccepted, - popBack = router::pop, + popBack = ::popBack, ), ) - private fun onAccept(shouldAskPushPermission: Boolean) { - modelScope.launch { + private fun onAccept(shouldAskPushPermission: Boolean) = modelScope.launch { + if (params.isTosAccepted) { + router.pop() + } else { cardRepository.acceptTangemTOS() + if (shouldAskPushPermission) { router.push(AppRoute.PushNotification) } else { neverToInitiallyAskPermissionUseCase(PUSH_PERMISSION) neverRequestPermissionUseCase(PUSH_PERMISSION) - router.push(AppRoute.Home) + router.replaceAll(AppRoute.Home) } } } + private fun popBack() { + if (params.isTosAccepted) { + router.pop() + } else { + appFinisher.finish() + } + } + private companion object { const val DISCLAIMER_URL = "https://tangem.com/tangem_tos.html" }