Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-06 16:14:34 +04:00
parent 8377208383
commit 3013aad882
3 changed files with 21 additions and 22 deletions

View file

@ -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")

View file

@ -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)
}

View file

@ -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"
}