浏览代码

Prevent backing out from initial onboarding

arkon 1 年之前
父节点
当前提交
c10cd6c808
共有 1 个文件被更改,包括 13 次插入2 次删除
  1. 13 2
      app/src/main/java/eu/kanade/tachiyomi/ui/more/OnboardingScreen.kt

+ 13 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/more/OnboardingScreen.kt

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