Updated on 2026-08-14
This commit is contained in:
parent
8377208383
commit
3013aad882
3 changed files with 21 additions and 22 deletions
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue