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