diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt index 3b586a76d..12a39a293 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt @@ -44,7 +44,6 @@ import com.hippo.ehviewer.client.parser.GalleryTokenApiParser import com.hippo.ehviewer.client.parser.HomeParser import com.hippo.ehviewer.client.parser.ProfileParser import com.hippo.ehviewer.client.parser.RateGalleryResult -import com.hippo.ehviewer.client.parser.SignInParser import com.hippo.ehviewer.client.parser.TorrentParser import com.hippo.ehviewer.client.parser.TorrentResult import com.hippo.ehviewer.client.parser.VoteCommentResult @@ -233,22 +232,6 @@ object EhEngine { suspend fun getFavorites(url: String) = ehRequest(url, EhUrl.referer).fetchUsingAsByteBuffer(FavoritesParser::parse) .apply { galleryInfoList.fillInfo(url) } - suspend fun signIn(username: String, password: String): String { - val referer = "https://forums.e-hentai.org/index.php?act=Login&CODE=00" - val url = EhUrl.API_SIGN_IN - val origin = "https://forums.e-hentai.org" - return ehRequest(url, referer, origin) { - formBody { - append("referer", referer) - append("b", "") - append("bt", "") - append("UserName", username) - append("PassWord", password) - append("CookieDate", "1") - } - }.fetchUsingAsText(SignInParser::parse) - } - suspend fun commentGallery(url: String, comment: String, id: Long = -1) = ehRequest(url, url, EhUrl.origin) { formBody { if (id == -1L) { diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt index 836270725..fcad9383f 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhUrl.kt @@ -36,7 +36,6 @@ object EhUrl { const val API_E = "https://api.e-hentai.org/api.php" const val URL_UCONFIG_E = HOST_E + "uconfig.php" const val URL_MY_TAGS_E = HOST_E + "mytags" - const val API_SIGN_IN = "https://forums.e-hentai.org/index.php?act=Login&CODE=01" const val URL_POPULAR_E = "https://e-hentai.org/popular" const val URL_POPULAR_EX = "https://exhentai.org/popular" const val URL_IMAGE_SEARCH_E = "https://upload.e-hentai.org/image_lookup.php" diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/SignInParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/SignInParser.kt deleted file mode 100644 index 0568f0546..000000000 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/SignInParser.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2016 Hippo Seven - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.hippo.ehviewer.client.parser - -import com.hippo.ehviewer.client.exception.EhException -import com.hippo.ehviewer.client.exception.ParseException -import java.util.regex.Pattern - -object SignInParser { - private val NAME_PATTERN = Pattern.compile("

You are now logged in as: (.+?)<") - private val ERROR_PATTERN = Pattern.compile( - "

The error returned was:

\\s*

(.+?)

" + - "|(.+?)", - ) - - fun parse(body: String): String { - var m = NAME_PATTERN.matcher(body) - return if (m.find()) { - m.group(1)!! - } else { - m = ERROR_PATTERN.matcher(body) - if (m.find()) { - throw EhException(m.group(1) ?: m.group(2)) - } else { - throw ParseException("Can't parse sign in") - } - } - } -} diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt index 728e611f2..bd6cc5bc4 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt @@ -14,66 +14,37 @@ import androidx.compose.foundation.layout.systemBarsPadding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Info -import androidx.compose.material.icons.filled.Visibility -import androidx.compose.material.icons.filled.VisibilityOff import androidx.compose.material3.Button -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.FilledTonalButton -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import com.hippo.ehviewer.R 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.LockDrawer import com.hippo.ehviewer.ui.StartDestination import com.hippo.ehviewer.ui.destinations.WebViewSignInScreenDestination import com.hippo.ehviewer.ui.openBrowser import com.hippo.ehviewer.ui.screen.popNavigate -import com.hippo.ehviewer.ui.tools.LocalDialogState import com.hippo.ehviewer.ui.tools.LocalWindowSizeClass -import com.hippo.ehviewer.util.displayString import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.RootNavGraph import com.ramcosta.composedestinations.navigation.DestinationsNavigator -import eu.kanade.tachiyomi.util.lang.launchIO -import eu.kanade.tachiyomi.util.lang.withNonCancellableContext -import eu.kanade.tachiyomi.util.lang.withUIContext -import kotlinx.coroutines.Job @RootNavGraph(start = true) @Destination @@ -81,100 +52,7 @@ import kotlinx.coroutines.Job fun SignInScreen(navigator: DestinationsNavigator) { LockDrawer(true) val windowSizeClass = LocalWindowSizeClass.current - val coroutineScope = rememberCoroutineScope() - val focusManager = LocalFocusManager.current - var isProgressIndicatorVisible by rememberSaveable { mutableStateOf(false) } - var showUsernameError by rememberSaveable { mutableStateOf(false) } - var showPasswordError by rememberSaveable { mutableStateOf(false) } - var username by rememberSaveable { mutableStateOf("") } - var password by rememberSaveable { mutableStateOf("") } - var passwordHidden by rememberSaveable { mutableStateOf(true) } val context = LocalContext.current - var signInJob by remember { mutableStateOf(null) } - val dialogState = LocalDialogState.current - - fun signIn() { - if (signInJob?.isActive == true) return - if (username.isEmpty()) { - showUsernameError = true - return - } else { - showUsernameError = false - } - if (password.isEmpty()) { - showPasswordError = true - return - } else { - showPasswordError = false - } - focusManager.clearFocus() - isProgressIndicatorVisible = true - - EhUtils.signOut() - signInJob = coroutineScope.launchIO { - runCatching { - EhEngine.signIn(username, password) - }.onFailure { - withUIContext { - focusManager.clearFocus() - dialogState.awaitPermissionOrCancel( - confirmText = R.string.get_it, - title = R.string.sign_in_failed, - showCancelButton = false, - text = { - Text( - """ - ${it.displayString()} - ${stringResource(R.string.sign_in_failed_tip)} - """.trimIndent(), - ) - }, - ) - isProgressIndicatorVisible = false - } - }.onSuccess { - withNonCancellableContext { postLogin() } - withUIContext { navigator.popNavigate(StartDestination) } - } - } - } - - @Composable - fun UsernameAndPasswordTextField() { - OutlinedTextField( - value = username, - onValueChange = { username = it }, - modifier = Modifier.width(dimensionResource(id = R.dimen.single_max_width)), - label = { Text(stringResource(R.string.username)) }, - supportingText = { if (showUsernameError) Text(stringResource(R.string.error_username_cannot_empty)) }, - trailingIcon = { if (showUsernameError) Icon(imageVector = Icons.Filled.Info, contentDescription = null) }, - keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next), - singleLine = true, - isError = showUsernameError, - ) - OutlinedTextField( - value = password, - onValueChange = { password = it }, - Modifier.width(dimensionResource(id = R.dimen.single_max_width)), - label = { Text(stringResource(R.string.password)) }, - visualTransformation = if (passwordHidden) PasswordVisualTransformation() else VisualTransformation.None, - supportingText = { if (showPasswordError) Text(stringResource(R.string.error_password_cannot_empty)) }, - keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), - keyboardActions = KeyboardActions(onDone = { signIn() }), - trailingIcon = { - if (showPasswordError) { - Icon(imageVector = Icons.Filled.Info, contentDescription = null) - } else { - IconButton(onClick = { passwordHidden = !passwordHidden }) { - val visibilityIcon = if (passwordHidden) Icons.Filled.Visibility else Icons.Filled.VisibilityOff - Icon(imageVector = visibilityIcon, contentDescription = null) - } - } - }, - singleLine = true, - isError = showPasswordError, - ) - } Box(contentAlignment = Alignment.Center) { when (windowSizeClass.widthSizeClass) { @@ -188,7 +66,6 @@ fun SignInScreen(navigator: DestinationsNavigator) { contentDescription = null, modifier = Modifier.padding(dimensionResource(id = R.dimen.keyline_margin)), ) - UsernameAndPasswordTextField() Text( text = stringResource(id = R.string.app_waring), modifier = Modifier.widthIn(max = dimensionResource(id = R.dimen.single_max_width)).padding(top = 24.dp), @@ -199,7 +76,7 @@ fun SignInScreen(navigator: DestinationsNavigator) { modifier = Modifier.widthIn(max = dimensionResource(id = R.dimen.single_max_width)).padding(top = 12.dp), style = MaterialTheme.typography.headlineMedium, ) - Spacer(modifier = Modifier.weight(1f)) + Spacer(modifier = Modifier.height(dimensionResource(id = R.dimen.keyline_margin))) Row(modifier = Modifier.padding(top = dimensionResource(R.dimen.keyline_margin))) { FilledTonalButton( onClick = { context.openBrowser(EhUrl.URL_REGISTER) }, @@ -208,44 +85,28 @@ fun SignInScreen(navigator: DestinationsNavigator) { Text(text = stringResource(id = R.string.register)) } Button( - onClick = ::signIn, + onClick = { navigator.navigate(WebViewSignInScreenDestination) }, modifier = Modifier.weight(1f).padding(horizontal = 4.dp), ) { Text(text = stringResource(id = R.string.sign_in)) } } - Row(modifier = Modifier.padding(horizontal = 4.dp)) { - TextButton( - onClick = { navigator.navigate(WebViewSignInScreenDestination) }, - modifier = Modifier.padding(horizontal = 8.dp), - ) { - Text( - text = buildAnnotatedString { - withStyle( - style = SpanStyle(textDecoration = TextDecoration.Underline), - ) { - append(stringResource(id = R.string.sign_in_via_webview)) - } - }, - ) - } - TextButton( - onClick = { - Settings.needSignIn = false - Settings.gallerySite = EhUrl.SITE_E - navigator.popNavigate(StartDestination) + TextButton( + onClick = { + Settings.needSignIn = false + Settings.gallerySite = EhUrl.SITE_E + navigator.popNavigate(StartDestination) + }, + ) { + Text( + text = buildAnnotatedString { + withStyle( + style = SpanStyle(textDecoration = TextDecoration.Underline), + ) { + append(stringResource(id = R.string.guest_mode)) + } }, - ) { - Text( - text = buildAnnotatedString { - withStyle( - style = SpanStyle(textDecoration = TextDecoration.Underline), - ) { - append(stringResource(id = R.string.guest_mode)) - } - }, - ) - } + ) } } } @@ -279,11 +140,10 @@ fun SignInScreen(navigator: DestinationsNavigator) { modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, ) { - UsernameAndPasswordTextField() - Spacer(modifier = Modifier.height(8.dp)) + Spacer(modifier = Modifier.height(48.dp)) Row(horizontalArrangement = Arrangement.Center) { Button( - onClick = ::signIn, + onClick = { navigator.navigate(WebViewSignInScreenDestination) }, modifier = Modifier.padding(horizontal = 4.dp).width(128.dp), ) { Text(text = stringResource(id = R.string.sign_in)) @@ -296,46 +156,27 @@ fun SignInScreen(navigator: DestinationsNavigator) { } } Spacer(modifier = Modifier.height(8.dp)) - Row(horizontalArrangement = Arrangement.Center) { - TextButton( - onClick = { navigator.navigate(WebViewSignInScreenDestination) }, - modifier = Modifier.padding(horizontal = 4.dp), - ) { - Text( - text = buildAnnotatedString { - withStyle( - style = SpanStyle(textDecoration = TextDecoration.Underline), - ) { - append(stringResource(id = R.string.sign_in_via_webview)) - } - }, - ) - } - TextButton( - onClick = { - Settings.needSignIn = false - Settings.gallerySite = EhUrl.SITE_E - navigator.popNavigate(StartDestination) + TextButton( + onClick = { + Settings.needSignIn = false + Settings.gallerySite = EhUrl.SITE_E + navigator.popNavigate(StartDestination) + }, + modifier = Modifier.padding(horizontal = 4.dp), + ) { + Text( + text = buildAnnotatedString { + withStyle( + style = SpanStyle(textDecoration = TextDecoration.Underline), + ) { + append(stringResource(id = R.string.guest_mode)) + } }, - modifier = Modifier.padding(horizontal = 4.dp), - ) { - Text( - text = buildAnnotatedString { - withStyle( - style = SpanStyle(textDecoration = TextDecoration.Underline), - ) { - append(stringResource(id = R.string.guest_mode)) - } - }, - ) - } + ) } } } } } - if (isProgressIndicatorVisible) { - CircularProgressIndicator() - } } } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 3b0aa63f2..187f4806e 100755 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -23,11 +23,8 @@ Verlauf Downloads Einstellungen - Benutzername - Kennwort Anmelden Konto erstellen - Mit WebView anmelden Melde dich zunächst an Der Text wird nicht eingegeben Achtung @@ -49,7 +46,6 @@ Fehler beim Erhalten pTokens Das Bild konnte nicht gespeichert werden Nummer ungültig - Verstanden ExHentai durchsuchen E-Hentai durchsuchen Die Welt ist so groß und der Panda sitzt ganz allein @@ -294,10 +290,7 @@ Screenshot verhindern Screenshots werden verhindert. Inhalt der App wird in Aktuelle Apps-Liste nicht angezeigt. Inhalt dieser App kommt aus dem Internet, von dem einige dir körperlichen oder emotionalen Schaden zufügen kann. Du hast es wirklich erfahrt und möchtest immer noch fortsetzen. - Gibt den Nutzername ein - Gibt das Passwort ein Anmeldung überspringen - Anmeldung fehlgeschlagen Ein Link von einen Galerie wurde in Zwischenablage erkennt. Gehen Größe des Lesezwischenspeichers diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index cc240062f..983a7f3d4 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -26,12 +26,8 @@ Descargas Configuración - Usuario - Contraseña - Iniciar sesión Registrarse - Iniciar sesión vía web Por favor, inicie sesión primero El texto está vacío @@ -58,10 +54,7 @@ Número invalido El contenido de esta aplicación es de Internet. Algunas de ellas pueden causarle daño psicológico. Ahora sabes los riesgos anteriormente mencionado y te gustaría asumirlos - El usuario no puede estar vacío Saltar inicio de sesión - Inicio de sesión fallido - Entendido Buscar ExHentai @@ -385,7 +378,6 @@ Eliminar Descarga fallida Descarga en pausa - La contraseña no puede estar vacía Ocurrió algo malo Privacidad Bloqueo de galerías diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 2dbc9cc1c..5eef9e39a 100755 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -26,12 +26,8 @@ Téléchargement Paramétres - Nom d\'utilisateur - Mot de passe - Se connecter Créer un compte - Se connecter via WebView Connectez-vous pour continuer Entrez le texte. @@ -58,11 +54,7 @@ Nombre invalide Le contenu de l\'application provient de l\'Internet, dont quelque chose peut vous causer le dommage physique ou mentale. Vous l\'avez bien compris et voulez continuer quand même. - Nom d\'ultilisateur ne doit pas être une chaîne vide - Mot de passe ne doit pas être une chaîne vide Continuer sans se connecter - Impossible de se connecter - Compris Chercher sur ExHentai diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 58f1b675e..dac465aeb 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -24,12 +24,8 @@ ダウンロード 設定 - ユーザー名 - パスワード - ログイン 登録 - Webでログイン ログインしてください テキストを入力してください @@ -56,11 +52,7 @@ 無効な数字です このアプリの内容はインターネットから取得したものです。その内容の一部は使用者のお体や心理に傷つける恐れがあります。それでも続行しますか? - ユーザー名を入力してください。 - パスワードを入力してください。 ログインをスキップ - ログインに失敗しました。 - 了解 ExHentaiを検索 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 4a3301eeb..596b7d7a7 100755 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -25,12 +25,8 @@ 다운로드 설정 - 사용자 이름 - 비밀번호 - 로그인 회원가입 - WebView를 통하여 로그인 먼저 로그인하세요. 텍스트가 비어 있습니다. @@ -60,11 +56,7 @@ 잘못된 번호 이 앱의 내용은 인터넷에서 받아옵니다. 이 앱을 사용하기 위해서는 받아온 내용 중 일부가 사용자에게 가할 수 있는 신체적 또는 정신적 피해를 감수해야 합니다. - 사용자 이름은 비워둘 수 없습니다. - 비밀번호는 비워둘 수 없습니다. 로그인 없이 사용 - 로그인 실패 - 알겠습니다 ExHentai 검색 diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 0a1ba375c..388f6f953 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -8,8 +8,6 @@ Ukjent vert For mange videresendinger Nettverksfeil - Passord - Logg inn via WebView Nedlastninger Registrering Ugyldig nummer @@ -18,7 +16,6 @@ Historikk Abonnement Innstillinger - Brukernavn Logg inn Logg inn først Last ned @@ -53,7 +50,6 @@ Torrenter Flere forhåndsvisninger Gjenoppfrisk - Skjønner Nøkkelordssøk Etiketter Ubegrenset diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 37ace0f92..4a40b124a 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -25,12 +25,8 @@ ดาวน์โหลด การตั้งค่า - ชื่อผู้ใช้ - รหัสผ่าน - ลงชื่อเข้าใช้ ลงทะเบียน - ลงชื่อเข้าใช้ผ่านมุมมองเว็บไซต์ โปรดลงชื่อเข้าใช้ก่อนเป็นอันดับแรก ข้อความห้ามเว้นว่างไว้ @@ -60,11 +56,7 @@ จำนวนไม่ถูกต้อง เนื้อหาภายในแอปพลิเคชั่นนี้มาจากอินเทอร์เน็ตทั้งหมด อาจมีเนื้อหาบางอย่างที่มีผลต่อร่างกายหรือจิตใจของคุณ คุณจะต้องยอมรับความเสี่ยงที่ดังกล่าว และดำเนินการต่อไป - ชื่อผู้ใช้ห้ามเว้นว่างไว้ - รหัสผ่านห้ามเว้นว่างไว้ ดำเนินการต่อโดยไม่ต้องลงชื่อเข้าระบบ - การลงชื่อเข้าใช้ล้มเหลว - เข้าใจแล้ว ไม่ต้องแสดงอีก ค้นหาใน ExHentai diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 49baeb70e..516de4c2d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -8,11 +8,8 @@ Geçmiş İndirilenler Ayarlar - Kullanıcı adı - Şifre Giriş yap Kaydol - WebView aracılığıyla giriş yap Lütfen önce giriş yap Uyarı İndirme konumu kullanılamıyor. Lütfen Ayarlardan ayarlayın. @@ -33,11 +30,7 @@ pToken alınamadı Görsel kaydedilemiyor Geçersiz numara - Kullanıcı adı boş bir metin olamaz - Şifre boş bir metin olamaz Giriş yapmaksızın devam et - Giriş başarısız - Anladım Dünya büyük olmasına rağmen pandacık yalnız oturuyor Anahtar Kelime Arama Görsel Arama @@ -68,7 +61,6 @@ Bilinmeyen host Bu uygulamadaki içerikler internetten alınmaktadır. Bazı içerikler fiziksel veya zihinsel olarak size zararlı gelebilir.Yukarıda, riskleri öğrendiniz ve üstleneceksiniz. \nKullanmaya devam ederek, yukarıdaki koşulları kabul edersiniz. - Bu sorun devam ederse, \"WebView aracılığıyla giriş yap\" seçeneğini veya \"Çerez aracılığıyla giriş yap\" seçeneğini deneyin. Galeriyi aç E-Hentai\'de Arayın Etiketlere Ayarlar->EH->Etiketlerim yerinden abone olun diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 77e59a739..474f30aac 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -22,11 +22,8 @@ 历史 下载 设置 - 用户名 - 密码 登录 注册 - 通过网页登录 请先登录 文本为空 警告 @@ -52,12 +49,7 @@ 非法数字 本应用中内容来自互联网,部分内容可能对您的生理及心理造成难以恢复的伤害。本应用作者不会对由本应用造成的任何后果负责。未成年人应在监护人指导下使用本应用。请遵守所在地的法律法规。 继续使用即代表您同意上述条款。 - 用户名不可为空 - 密码不可为空 游客模式 - 登录失败 - 若持续出错,请尝试“通过网页登录”或“通过 Cookie 登录”。 - 知道了 搜索 ExHentai 搜索 E-Hentai diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index e3ca1e255..1b010abcf 100755 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -26,12 +26,8 @@ 下載 設置 - 用户名 - 密碼 - 登錄 註冊 - 通過網頁登錄 請先登錄 文本為空 @@ -61,12 +57,7 @@ 非法數字 本應用中內容來自互聯網,部分內容可能對您的生理及心理造成難以恢復的傷害。本應用作者不會對由本應用造成的任何後果負責。\n\n未成年人應在監護人指導下使用本應用。 - 用户名不可為空 - 密碼不可為空 跳過登錄 - 登錄失敗 - 若持續出錯,請嘗試“通過網頁登錄”或“通過 Cookie 登錄”。 - 知道了 搜索 ExHentai diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a2667edf4..c550c8ece 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -22,11 +22,8 @@ 歷史 下載 設定 - 使用者名稱 - 密碼 登入 註冊 - 透過網頁登入 請先登入 文字是空的 警告 @@ -52,12 +49,7 @@ 無效的數字 本應用程式中內容來自網際網路,部分內容可能對您的生理及心理造成難以恢復的傷害。本應用程式的作者不會對由其所造成的任何影響負責。\n\n未成年人應在監護人指導下使用本應用程式。\n\n繼續使用即代表您同意上述條款。 繼續使用即表示您同意上述條款。 - 使用者名稱欄位不能為空 - 密碼欄位不能為空 略過登入 - 登入失敗 - 若持續出錯,請嘗試“通過網頁登入”或“通過 Cookie 登入”。 - 知道了 在 ExHentai 搜尋 在 E-Hentai 搜尋 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5545ea540..aaf34745a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,11 +36,8 @@ History Downloads Settings - Username - Password Sign in Register - Sign in via WebView Please sign in first Text is empty Warning @@ -90,12 +87,7 @@ Invalid number The content of this application is from the Internet. Some of it may do physical or mental harm to you. You have learnt the risks above and would like to undertake them. By continuing to use it, you agree to the above terms. By continuing to use it, you agree to the above terms. - Username cannot be an empty string - Password cannot be an empty string Continue without signing in - Sign in failed - If this issue continues, try \"Sign in via WebView\" or \"Sign in via cookies\". - Got it Search ExHentai Search E-Hentai