From 099d802a03fe47454c9aeb808770dba4fc677021 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sat, 11 Feb 2023 07:13:28 +0800 Subject: [PATCH] Get cookies for image limits if site is Ex --- .../com/hippo/ehviewer/client/EhEngine.kt | 3 +- .../ehviewer/ui/login/CookieSignInScreen.kt | 1 - .../hippo/ehviewer/ui/login/LoginActivity.kt | 44 +++++++++++-------- .../ehviewer/ui/login/SelectSiteScreen.kt | 15 ++++--- .../ehviewer/ui/login/WebviewSignInScreen.kt | 14 ++++-- 5 files changed, 46 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt index e35c839c1..2f22cc559 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt @@ -895,8 +895,7 @@ object EhEngine { } @Throws(Throwable::class) - suspend fun getUConfig(): Void? { - val url = EhUrl.uConfigUrl + suspend fun getUConfig(url: String = EhUrl.uConfigUrl): Void? { Log.d(TAG, url) var request = EhRequestBuilder(url, null).build() var call = okHttpClient.newCall(request) 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 2f5c2eaeb..6c6f9e2e7 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 @@ -96,7 +96,6 @@ fun CookieSignInScene() { store.addCookie(newCookie(EhCookieStore.KEY_IPB_PASS_HASH, hash, EhUrl.DOMAIN_E)) store.addCookie(newCookie(EhCookieStore.KEY_IPB_PASS_HASH, hash, EhUrl.DOMAIN_EX)) if (igneous.isBlank()) return - store.addCookie(newCookie(EhCookieStore.KEY_IGNEOUS, igneous, EhUrl.DOMAIN_E)) store.addCookie(newCookie(EhCookieStore.KEY_IGNEOUS, igneous, EhUrl.DOMAIN_EX)) } 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 index d988bf9bc..779d4105e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/login/LoginActivity.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/login/LoginActivity.kt @@ -18,6 +18,8 @@ import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.ui.EhActivity +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.launch class LoginActivity : EhActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -63,31 +65,37 @@ class LoginActivity : EhActivity() { } } -suspend fun postLogin() { - runCatching { - EhEngine.getProfile().run { - Settings.putDisplayName(displayName) - Settings.putAvatar(avatar) - } - }.onFailure { - it.printStackTrace() - } - - runCatching { - Settings.putGallerySite(EhUrl.SITE_EX) - EhEngine.getUConfig() - }.onFailure { - Settings.putSelectSite(false) - Settings.putGallerySite(EhUrl.SITE_E) +suspend fun postLogin() = coroutineScope { + launch { runCatching { - EhEngine.getUConfig() + EhEngine.getProfile().run { + Settings.putDisplayName(displayName) + Settings.putAvatar(avatar) + } }.onFailure { it.printStackTrace() } } + launch { + runCatching { + Settings.putGallerySite(EhUrl.SITE_EX) + EhEngine.getUConfig() + }.onFailure { + Settings.putSelectSite(false) + Settings.putGallerySite(EhUrl.SITE_E) + launch { + runCatching { + EhEngine.getUConfig() + }.onFailure { + it.printStackTrace() + } + } + } + }.join() } -val LocalNavController = compositionLocalOf { error("CompositionLocal LocalNavController not present!") } +val LocalNavController = + compositionLocalOf { error("CompositionLocal LocalNavController not present!") } const val SIGN_IN_ROUTE_NAME = "SignIn" const val WEBVIEW_SIGN_IN_ROUTE_NAME = "WebViewSignIn" 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 eeb47b856..02536acf8 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 @@ -119,14 +119,17 @@ fun SelectSiteScreen() { ) { Button(onClick = { Settings.putSelectSite(false) - if (!siteEx) { - Settings.putGallerySite(EhUrl.SITE_E) - coroutineScope.launchNonCancellable { - runCatching { + coroutineScope.launchNonCancellable { + runCatching { + if (!siteEx) { + Settings.putGallerySite(EhUrl.SITE_E) EhEngine.getUConfig() - }.onFailure { - it.printStackTrace() + } else { + // Get cookies for image limits + EhEngine.getUConfig(EhUrl.URL_UCONFIG_E) } + }.onFailure { + it.printStackTrace() } } activity.finish() 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 b0b4d80bd..8e617651f 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 @@ -15,7 +15,9 @@ import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.widget.DialogWebChromeClient -import eu.kanade.tachiyomi.util.lang.launchNonCancellable +import eu.kanade.tachiyomi.util.lang.launchIO +import eu.kanade.tachiyomi.util.lang.withNonCancellableContext +import eu.kanade.tachiyomi.util.lang.withUIContext import okhttp3.Cookie import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrlOrNull @@ -99,10 +101,14 @@ fun WebviewSignInScreen() { } if (getId && getHash) { present = true - coroutineScope.launchNonCancellable { - postLogin() + coroutineScope.launchIO { + withNonCancellableContext { + postLogin() + } + withUIContext { + navController.navigate(SELECT_SITE_ROUTE_NAME) + } } - navController.navigate(SELECT_SITE_ROUTE_NAME) } } }