Fix advanced login options for users on old devices
Fix ExHentai login and solve-captcha-window not working for users on old devices Speed up ExHentai login significantly
This commit is contained in:
parent
cdd7f42532
commit
fdef687f0c
@ -1,5 +1,6 @@
|
|||||||
package exh.ui.captcha
|
package exh.ui.captcha
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
|
|
||||||
@ -12,7 +13,8 @@ open class BasicWebViewClient(protected val activity: BrowserActionActivity,
|
|||||||
if(verifyComplete(url)) {
|
if(verifyComplete(url)) {
|
||||||
activity.finish()
|
activity.finish()
|
||||||
} else {
|
} else {
|
||||||
if(injectScript != null) view.loadUrl("javascript:(function() {$injectScript})();")
|
if(injectScript != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
|
||||||
|
view.evaluateJavascript("(function() {$injectScript})();", null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,23 +8,15 @@ import android.view.ViewGroup
|
|||||||
import android.webkit.CookieManager
|
import android.webkit.CookieManager
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
|
||||||
import com.jakewharton.rxbinding.view.clicks
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.source.online.all.EHentai
|
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
||||||
import eu.kanade.tachiyomi.util.gone
|
import eu.kanade.tachiyomi.util.gone
|
||||||
import eu.kanade.tachiyomi.util.invisible
|
|
||||||
import eu.kanade.tachiyomi.util.launchUI
|
import eu.kanade.tachiyomi.util.launchUI
|
||||||
import eu.kanade.tachiyomi.util.visible
|
import eu.kanade.tachiyomi.util.visible
|
||||||
import exh.EXH_SOURCE_ID
|
|
||||||
import exh.uconfig.WarnConfigureDialogController
|
import exh.uconfig.WarnConfigureDialogController
|
||||||
import kotlinx.android.synthetic.main.eh_activity_login.view.*
|
import kotlinx.android.synthetic.main.eh_activity_login.view.*
|
||||||
import rx.Observable
|
|
||||||
import rx.android.schedulers.AndroidSchedulers
|
|
||||||
import rx.schedulers.Schedulers
|
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.net.HttpCookie
|
import java.net.HttpCookie
|
||||||
@ -53,7 +45,6 @@ class LoginController : NucleusController<LoginPresenter>() {
|
|||||||
|
|
||||||
btn_advanced.setOnClickListener {
|
btn_advanced.setOnClickListener {
|
||||||
advanced_options.visible()
|
advanced_options.visible()
|
||||||
adv_shim.visible()
|
|
||||||
webview.gone()
|
webview.gone()
|
||||||
btn_advanced.isEnabled = false
|
btn_advanced.isEnabled = false
|
||||||
btn_cancel.isEnabled = false
|
btn_cancel.isEnabled = false
|
||||||
@ -94,7 +85,6 @@ class LoginController : NucleusController<LoginPresenter>() {
|
|||||||
private fun hideAdvancedOptions(view: View) {
|
private fun hideAdvancedOptions(view: View) {
|
||||||
with(view) {
|
with(view) {
|
||||||
advanced_options.gone()
|
advanced_options.gone()
|
||||||
adv_shim.gone()
|
|
||||||
webview.visible()
|
webview.visible()
|
||||||
btn_advanced.isEnabled = true
|
btn_advanced.isEnabled = true
|
||||||
btn_cancel.isEnabled = true
|
btn_cancel.isEnabled = true
|
||||||
@ -115,8 +105,9 @@ class LoginController : NucleusController<LoginPresenter>() {
|
|||||||
val parsedUrl = Uri.parse(url)
|
val parsedUrl = Uri.parse(url)
|
||||||
if (parsedUrl.host.equals("forums.e-hentai.org", ignoreCase = true)) {
|
if (parsedUrl.host.equals("forums.e-hentai.org", ignoreCase = true)) {
|
||||||
//Hide distracting content
|
//Hide distracting content
|
||||||
if(!parsedUrl.queryParameterNames.contains(PARAM_SKIP_INJECT))
|
if(!parsedUrl.queryParameterNames.contains(PARAM_SKIP_INJECT)
|
||||||
view.loadUrl(HIDE_JS)
|
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
|
||||||
|
view.evaluateJavascript(HIDE_JS, null)
|
||||||
|
|
||||||
//Check login result
|
//Check login result
|
||||||
if (parsedUrl.getQueryParameter("code")?.toInt() != 0) {
|
if (parsedUrl.getQueryParameter("code")?.toInt() != 0) {
|
||||||
@ -126,7 +117,7 @@ class LoginController : NucleusController<LoginPresenter>() {
|
|||||||
//At ExHentai, check that everything worked out...
|
//At ExHentai, check that everything worked out...
|
||||||
if (applyExHentaiCookies(url)) {
|
if (applyExHentaiCookies(url)) {
|
||||||
preferenceManager.enableExhentai().set(true)
|
preferenceManager.enableExhentai().set(true)
|
||||||
finishLogin(view)
|
finishLogin()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,35 +125,11 @@ class LoginController : NucleusController<LoginPresenter>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun finishLogin(view: View) {
|
fun finishLogin() {
|
||||||
val progressDialog = MaterialDialog.Builder(view.context)
|
router.popCurrentController()
|
||||||
.title("Finalizing login")
|
|
||||||
.progress(true, 0)
|
|
||||||
.content("Please wait...")
|
|
||||||
.cancelable(false)
|
|
||||||
.show()
|
|
||||||
|
|
||||||
val eh = sourceManager
|
//Upload settings
|
||||||
.getOnlineSources()
|
WarnConfigureDialogController.uploadSettings(router)
|
||||||
.find { it.id == EXH_SOURCE_ID } as EHentai
|
|
||||||
|
|
||||||
Observable.fromCallable {
|
|
||||||
//I honestly have no idea why we need to call this twice, but it works, so whatever
|
|
||||||
try {
|
|
||||||
eh.fetchFavorites()
|
|
||||||
} catch(ignored: Exception) {}
|
|
||||||
try {
|
|
||||||
eh.fetchFavorites()
|
|
||||||
} catch(ignored: Exception) {}
|
|
||||||
}.subscribeOn(Schedulers.io())
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe {
|
|
||||||
progressDialog.dismiss()
|
|
||||||
router.popCurrentController()
|
|
||||||
|
|
||||||
//Upload settings
|
|
||||||
WarnConfigureDialogController.uploadSettings(router)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
<android.support.design.widget.CoordinatorLayout
|
<android.support.design.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
@ -15,74 +14,74 @@
|
|||||||
<android.support.design.widget.AppBarLayout
|
<android.support.design.widget.AppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
</android.support.design.widget.AppBarLayout>
|
|
||||||
|
|
||||||
<android.support.constraint.ConstraintLayout
|
<android.support.constraint.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:animateLayoutChanges="true">
|
android:animateLayoutChanges="true">
|
||||||
|
|
||||||
<android.support.v7.widget.CardView
|
<FrameLayout
|
||||||
android:id="@+id/advanced_options"
|
android:id="@+id/advanced_options"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="0dp"
|
||||||
android:visibility="gone"
|
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/linearLayout"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="@+id/webview"
|
|
||||||
tools:visibility="visible">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:layout_x="0dp"
|
|
||||||
android:layout_y="0dp"
|
|
||||||
android:background="?android:attr/colorBackground"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btn_recheck"
|
|
||||||
style="@style/Widget.AppCompat.Button.Borderless"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Recheck login status" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btn_alt_login"
|
|
||||||
style="@style/Widget.AppCompat.Button.Borderless"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Alternative login page" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btn_skip_restyle"
|
|
||||||
style="@style/Widget.AppCompat.Button.Borderless"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Skip page restyling" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/btn_close"
|
|
||||||
style="@style/Widget.AppCompat.Button.Borderless"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Close" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</android.support.v7.widget.CardView>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/adv_shim"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="#b5000000"
|
android:background="#b5000000"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:visibility="gone" />
|
android:focusable="false"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<android.support.v7.widget.CardView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/linearLayout"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/webview">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:background="?android:attr/colorBackground"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_recheck"
|
||||||
|
style="@style/Widget.AppCompat.Button.Borderless"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Recheck login status" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_alt_login"
|
||||||
|
style="@style/Widget.AppCompat.Button.Borderless"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Alternative login page" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_skip_restyle"
|
||||||
|
style="@style/Widget.AppCompat.Button.Borderless"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Skip page restyling" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_close"
|
||||||
|
style="@style/Widget.AppCompat.Button.Borderless"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Close" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</android.support.v7.widget.CardView>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<WebView
|
<WebView
|
||||||
android:id="@+id/webview"
|
android:id="@+id/webview"
|
||||||
@ -91,10 +90,7 @@
|
|||||||
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
|
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
app:layout_constraintVertical_bias="0.0">
|
|
||||||
|
|
||||||
</WebView>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/linearLayout"
|
android:id="@+id/linearLayout"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user