diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 34609a290..26ca593b7 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,7 +34,7 @@
android:theme="@style/AppTheme"
tools:targetApi="tiramisu">
@@ -126,10 +126,6 @@
-
{ error("CompositionLocal LocalNavController not present!") }
+
const val BASE_SETTINGS_SCREEN = "Base"
const val EH_SETTINGS_SCREEN = "Eh"
const val DOWNLOAD_SETTINGS_SCREEN = "Download"
@@ -76,3 +122,7 @@ const val LICENSE_SCREEN = "License"
const val UCONFIG_SCREEN = "UConfig"
const val MYTAGS_SCREEN = "Mytags"
const val FILTER_SCREEN = "Filter"
+const val SIGN_IN_ROUTE_NAME = "SignIn"
+const val WEBVIEW_SIGN_IN_ROUTE_NAME = "WebViewSignIn"
+const val COOKIE_SIGN_IN_ROUTE_NAME = "CookieSignIn"
+const val SELECT_SITE_ROUTE_NAME = "SelectSite"
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt b/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt
index 5c655ad13..16e8f6897 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/GalleryInfoBottomSheet.kt
@@ -43,7 +43,6 @@ import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
import com.hippo.ehviewer.client.data.GalleryDetail
import com.hippo.ehviewer.client.thumbUrl
-import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.util.tellClipboardWithToast
private const val INDEX_URL = 2
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt
index f211c8d60..c816e26f8 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.kt
@@ -63,7 +63,6 @@ import com.hippo.ehviewer.download.downloadLocation
import com.hippo.ehviewer.image.Image
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
import com.hippo.ehviewer.ui.legacy.EditTextDialogBuilder
-import com.hippo.ehviewer.ui.login.LoginActivity
import com.hippo.ehviewer.ui.scene.BaseScene
import com.hippo.ehviewer.ui.scene.GalleryDetailScene
import com.hippo.ehviewer.ui.scene.GalleryListScene
@@ -351,7 +350,7 @@ class MainActivity : EhActivity() {
override fun onResume() {
if (EhUtils.needSignedIn()) {
connectivityManager.bindProcessToNetwork(null)
- loginLauncher.launch(Intent(this, LoginActivity::class.java))
+ loginLauncher.launch(Intent(this, ConfigureActivity::class.java))
}
super.onResume()
lifecycleScope.launch {
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/login/CookieSignInScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/login/CookieSignInScreen.kt
index d1768c257..067bb6fac 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/login/CookieSignInScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/login/CookieSignInScreen.kt
@@ -56,6 +56,8 @@ import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
+import com.hippo.ehviewer.ui.LocalNavController
+import com.hippo.ehviewer.ui.SELECT_SITE_ROUTE_NAME
import com.hippo.ehviewer.ui.compose.rememberDialogState
import com.hippo.ehviewer.util.ExceptionUtils
import eu.kanade.tachiyomi.util.lang.launchIO
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/login/LoginActivity.kt b/app/src/main/java/com/hippo/ehviewer/ui/login/LoginActivity.kt
deleted file mode 100644
index 20da78fdb..000000000
--- a/app/src/main/java/com/hippo/ehviewer/ui/login/LoginActivity.kt
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.hippo.ehviewer.ui.login
-
-import android.os.Bundle
-import androidx.compose.animation.AnimatedContentTransitionScope
-import androidx.compose.animation.EnterTransition
-import androidx.compose.animation.ExitTransition
-import androidx.compose.animation.core.tween
-import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.SideEffect
-import androidx.compose.runtime.compositionLocalOf
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.navigation.NavController
-import androidx.navigation.compose.NavHost
-import androidx.navigation.compose.composable
-import androidx.navigation.compose.rememberNavController
-import com.hippo.ehviewer.Settings
-import com.hippo.ehviewer.client.EhCookieStore
-import com.hippo.ehviewer.client.EhEngine
-import com.hippo.ehviewer.client.EhUrl
-import com.hippo.ehviewer.ui.EhActivity
-import com.hippo.ehviewer.ui.compose.setMD3Content
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.launch
-
-class LoginActivity : EhActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setMD3Content {
- val windowSizeClass = calculateWindowSizeClass(this)
- val navController = rememberNavController()
-
- CompositionLocalProvider(LocalNavController provides navController) {
- NavHost(
- navController = navController,
- startDestination = SIGN_IN_ROUTE_NAME,
- enterTransition = { slideIntoContainer(AnimatedContentTransitionScope.SlideDirection.Up, tween(200)) },
- exitTransition = { ExitTransition.None },
- popEnterTransition = { EnterTransition.None },
- popExitTransition = { slideOutOfContainer(AnimatedContentTransitionScope.SlideDirection.Down, tween(200)) },
- ) {
- composable(SIGN_IN_ROUTE_NAME) {
- SignInScreen(windowSizeClass)
- }
-
- composable(WEBVIEW_SIGN_IN_ROUTE_NAME) {
- WebviewSignInScreen()
- }
-
- composable(COOKIE_SIGN_IN_ROUTE_NAME) {
- CookieSignInScene(windowSizeClass)
- }
-
- composable(SELECT_SITE_ROUTE_NAME) {
- val selectSite by remember { mutableStateOf(Settings.selectSite) }
- if (selectSite) {
- SelectSiteScreen()
- } else {
- SideEffect {
- finish()
- }
- }
- }
- }
- }
- }
- }
-
- override fun finish() {
- super.finish()
- Settings.needSignIn = false
- }
-}
-
-suspend fun postLogin() = coroutineScope {
- launch {
- runCatching {
- EhEngine.getProfile().run {
- Settings.displayName = displayName
- Settings.avatar = avatar
- }
- }.onFailure {
- it.printStackTrace()
- }
- }
- launch {
- runCatching {
- // For the `star` cookie
- EhEngine.getNews(false)
- EhCookieStore.copyCookie(EhUrl.DOMAIN_E, EhUrl.DOMAIN_EX, EhCookieStore.KEY_STAR)
-
- // Sad panda check
- Settings.gallerySite = EhUrl.SITE_EX
- EhEngine.getUConfig()
- }.onFailure {
- Settings.selectSite = false
- Settings.gallerySite = EhUrl.SITE_E
- launch {
- runCatching {
- EhEngine.getUConfig()
- }.onFailure {
- it.printStackTrace()
- }
- }
- }
- }.join()
-}
-
-val LocalNavController = compositionLocalOf { error("CompositionLocal LocalNavController not present!") }
-
-const val SIGN_IN_ROUTE_NAME = "SignIn"
-const val WEBVIEW_SIGN_IN_ROUTE_NAME = "WebViewSignIn"
-const val COOKIE_SIGN_IN_ROUTE_NAME = "CookieSignIn"
-const val SELECT_SITE_ROUTE_NAME = "SelectSite"
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/login/PostLogin.kt b/app/src/main/java/com/hippo/ehviewer/ui/login/PostLogin.kt
new file mode 100644
index 000000000..5758db320
--- /dev/null
+++ b/app/src/main/java/com/hippo/ehviewer/ui/login/PostLogin.kt
@@ -0,0 +1,42 @@
+package com.hippo.ehviewer.ui.login
+
+import com.hippo.ehviewer.Settings
+import com.hippo.ehviewer.client.EhCookieStore
+import com.hippo.ehviewer.client.EhEngine
+import com.hippo.ehviewer.client.EhUrl
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.launch
+
+suspend fun postLogin() = coroutineScope {
+ launch {
+ runCatching {
+ EhEngine.getProfile().run {
+ Settings.displayName = displayName
+ Settings.avatar = avatar
+ }
+ }.onFailure {
+ it.printStackTrace()
+ }
+ }
+ launch {
+ runCatching {
+ // For the `star` cookie
+ EhEngine.getNews(false)
+ EhCookieStore.copyCookie(EhUrl.DOMAIN_E, EhUrl.DOMAIN_EX, EhCookieStore.KEY_STAR)
+
+ // Sad panda check
+ Settings.gallerySite = EhUrl.SITE_EX
+ EhEngine.getUConfig()
+ }.onFailure {
+ Settings.selectSite = false
+ Settings.gallerySite = EhUrl.SITE_E
+ launch {
+ runCatching {
+ EhEngine.getUConfig()
+ }.onFailure {
+ it.printStackTrace()
+ }
+ }
+ }
+ }.join()
+}
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/login/SelectSiteScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/login/SelectSiteScreen.kt
index d31774c0e..f9a6b531e 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/login/SelectSiteScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/login/SelectSiteScreen.kt
@@ -120,6 +120,7 @@ fun SelectSiteScreen() {
) {
Button(onClick = {
Settings.selectSite = false
+ Settings.needSignIn = false
coroutineScope.launchNonCancellable {
runCatching {
if (!siteEx) {
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/login/SignInScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/login/SignInScreen.kt
index 2ae86eb9f..a709f6fb9 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/login/SignInScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/login/SignInScreen.kt
@@ -61,6 +61,10 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
+import com.hippo.ehviewer.ui.COOKIE_SIGN_IN_ROUTE_NAME
+import com.hippo.ehviewer.ui.LocalNavController
+import com.hippo.ehviewer.ui.SELECT_SITE_ROUTE_NAME
+import com.hippo.ehviewer.ui.WEBVIEW_SIGN_IN_ROUTE_NAME
import com.hippo.ehviewer.ui.compose.rememberDialogState
import com.hippo.ehviewer.ui.openBrowser
import com.hippo.ehviewer.util.ExceptionUtils
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/login/WebviewSignInScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/login/WebviewSignInScreen.kt
index c491a5b96..b2cdf1e2f 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/login/WebviewSignInScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/login/WebviewSignInScreen.kt
@@ -13,6 +13,8 @@ import androidx.compose.ui.viewinterop.AndroidView
import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.EhUtils
+import com.hippo.ehviewer.ui.LocalNavController
+import com.hippo.ehviewer.ui.SELECT_SITE_ROUTE_NAME
import com.hippo.ehviewer.ui.legacy.DialogWebChromeClient
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt
index 3c31abd46..a17206e75 100755
--- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt
@@ -148,6 +148,7 @@ import com.hippo.ehviewer.spider.SpiderQueen
import com.hippo.ehviewer.spider.SpiderQueen.Companion.MODE_READ
import com.hippo.ehviewer.ui.CommonOperations
import com.hippo.ehviewer.ui.GalleryInfoBottomSheet
+import com.hippo.ehviewer.ui.LocalNavController
import com.hippo.ehviewer.ui.MainActivity
import com.hippo.ehviewer.ui.addToFavorites
import com.hippo.ehviewer.ui.compose.CrystalCard
@@ -163,7 +164,6 @@ import com.hippo.ehviewer.ui.legacy.GalleryRatingBar.OnUserRateListener
import com.hippo.ehviewer.ui.legacy.ObservedTextView
import com.hippo.ehviewer.ui.legacy.URLImageGetter
import com.hippo.ehviewer.ui.legacy.recyclerview.calculateSuitableSpanCount
-import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.ui.navToReader
import com.hippo.ehviewer.ui.openBrowser
import com.hippo.ehviewer.ui.removeFromFavorites
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt
index a4a44dbb2..aa76c1d28 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/AboutScreen.kt
@@ -18,7 +18,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import com.hippo.ehviewer.BuildConfig
import com.hippo.ehviewer.R
-import com.hippo.ehviewer.ui.login.LocalNavController
+import com.hippo.ehviewer.ui.LICENSE_SCREEN
+import com.hippo.ehviewer.ui.LocalNavController
private const val REPO_URL = "https://github.com/Ehviewer-Overhauled/Ehviewer"
private const val RELEASE_URL = "https://github.com/Ehviewer-Overhauled/Ehviewer/releases"
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
index 8087bbdac..d020f8f5f 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
@@ -39,9 +39,9 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.data.FavListUrlBuilder
import com.hippo.ehviewer.client.systemDns
+import com.hippo.ehviewer.ui.LocalNavController
import com.hippo.ehviewer.ui.compose.observed
import com.hippo.ehviewer.ui.legacy.EditTextDialogBuilder
-import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.util.LogCat
import com.hippo.ehviewer.util.ReadableTime
import kotlinx.coroutines.Dispatchers
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/BaseScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/BaseScreen.kt
index 60c0eeb89..2879e2b84 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/BaseScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/BaseScreen.kt
@@ -22,6 +22,11 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import com.hippo.ehviewer.R
+import com.hippo.ehviewer.ui.ABOUT_SETTINGS_SCREEN
+import com.hippo.ehviewer.ui.ADVANCED_SETTINGS_SCREEN
+import com.hippo.ehviewer.ui.DOWNLOAD_SETTINGS_SCREEN
+import com.hippo.ehviewer.ui.EH_SETTINGS_SCREEN
+import com.hippo.ehviewer.ui.SECURITY_SETTINGS_SCREEN
@Composable
fun BaseScreen() {
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
index 9f4576193..27096040b 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
@@ -36,11 +36,11 @@ import com.hippo.ehviewer.download.DownloadManager
import com.hippo.ehviewer.download.downloadLocation
import com.hippo.ehviewer.spider.SpiderQueen
import com.hippo.ehviewer.spider.readCompatFromUniFile
+import com.hippo.ehviewer.ui.LocalNavController
import com.hippo.ehviewer.ui.compose.observed
import com.hippo.ehviewer.ui.compose.rememberedAccessor
import com.hippo.ehviewer.ui.keepNoMediaFileStatus
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
-import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
import kotlinx.coroutines.Dispatchers
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
index e73cf8a10..2589310b6 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt
@@ -43,10 +43,13 @@ import com.hippo.ehviewer.client.parser.HomeParser
import com.hippo.ehviewer.dailycheck.schedHour
import com.hippo.ehviewer.dailycheck.schedMinute
import com.hippo.ehviewer.dailycheck.updateDailyCheckWork
+import com.hippo.ehviewer.ui.FILTER_SCREEN
+import com.hippo.ehviewer.ui.LocalNavController
+import com.hippo.ehviewer.ui.MYTAGS_SCREEN
+import com.hippo.ehviewer.ui.UCONFIG_SCREEN
import com.hippo.ehviewer.ui.compose.observed
import com.hippo.ehviewer.ui.compose.rememberedAccessor
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
-import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.util.whisperClipboard
import eu.kanade.tachiyomi.util.lang.withUIContext
import kotlinx.coroutines.Dispatchers
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/LicenseScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/LicenseScreen.kt
index df5b2da81..1b0fa3593 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/LicenseScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/LicenseScreen.kt
@@ -13,7 +13,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import com.hippo.ehviewer.R
-import com.hippo.ehviewer.ui.login.LocalNavController
+import com.hippo.ehviewer.ui.LocalNavController
import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer
@Composable
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt
index 7d4987eca..b5db57c83 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt
@@ -35,8 +35,8 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.unit.dp
import arrow.atomic.Atomic
import com.hippo.ehviewer.R
+import com.hippo.ehviewer.ui.LocalNavController
import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder
-import com.hippo.ehviewer.ui.login.LocalNavController
import com.hippo.ehviewer.ui.openBrowser
import com.hippo.ehviewer.ui.settings.PreferenceTokens.PreferenceTextPadding
import com.jamal.composeprefs3.ui.prefs.DropDownPref
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt
index fb01d1594..46ca44c1d 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt
@@ -17,8 +17,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.hippo.ehviewer.R
import com.hippo.ehviewer.Settings
+import com.hippo.ehviewer.ui.LocalNavController
import com.hippo.ehviewer.ui.isAuthenticationSupported
-import com.hippo.ehviewer.ui.login.LocalNavController
@Composable
fun SecurityScreen() {
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 55c6dc3f0..15ff2324e 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -70,7 +70,7 @@
android:label="DownloadsScene" />