Prevent backing out from initial onboarding

This commit is contained in:
arkon 2023-12-17 18:30:43 -05:00
parent c62cd6e997
commit c10cd6c808

View File

@ -1,6 +1,8 @@
package eu.kanade.tachiyomi.ui.more package eu.kanade.tachiyomi.ui.more
import androidx.activity.compose.BackHandler
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
@ -8,6 +10,7 @@ import eu.kanade.domain.base.BasePreferences
import eu.kanade.presentation.more.onboarding.OnboardingScreen import eu.kanade.presentation.more.onboarding.OnboardingScreen
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.ui.setting.SettingsScreen import eu.kanade.tachiyomi.ui.setting.SettingsScreen
import tachiyomi.presentation.core.util.collectAsState
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
@ -18,14 +21,22 @@ class OnboardingScreen : Screen() {
val navigator = LocalNavigator.currentOrThrow val navigator = LocalNavigator.currentOrThrow
val basePreferences = remember { Injekt.get<BasePreferences>() } val basePreferences = remember { Injekt.get<BasePreferences>() }
val shownOnboardingFlow by basePreferences.shownOnboardingFlow().collectAsState()
val finishOnboarding = { val finishOnboarding: () -> Unit = {
basePreferences.shownOnboardingFlow().set(true) basePreferences.shownOnboardingFlow().set(true)
navigator.pop() navigator.pop()
} }
BackHandler(
enabled = !shownOnboardingFlow,
onBack = {
// Prevent exiting if onboarding hasn't been completed
},
)
OnboardingScreen( OnboardingScreen(
onComplete = { finishOnboarding() }, onComplete = finishOnboarding,
onRestoreBackup = { onRestoreBackup = {
finishOnboarding() finishOnboarding()
navigator.push(SettingsScreen(SettingsScreen.Destination.DataAndStorage)) navigator.push(SettingsScreen(SettingsScreen.Destination.DataAndStorage))