Support authorization for MangaLib and HentaiLib #122
This commit is contained in:
@@ -68,6 +68,7 @@
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
<activity
|
||||
android:name="org.koitharu.kotatsu.settings.sources.auth.SourceAuthActivity"
|
||||
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
<activity
|
||||
android:name="org.koitharu.kotatsu.core.ui.CrashActivity"
|
||||
|
||||
@@ -217,11 +217,17 @@ open class MangaLibRepository(loaderContext: MangaLoaderContext) :
|
||||
}
|
||||
|
||||
override fun isAuthorized(): Boolean {
|
||||
return false
|
||||
return loaderContext.cookieJar.getCookies(getDomain()).any {
|
||||
it.name.startsWith("remember_web_")
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getUsername(): String {
|
||||
TODO("Not yet implemented")
|
||||
val body = loaderContext.httpGet("https://${getDomain()}/messages").parseHtml().body()
|
||||
if (body.baseUri().endsWith("/login")) {
|
||||
throw AuthRequiredException(source)
|
||||
}
|
||||
return body.selectFirst(".profile-user__username")?.text() ?: parseFailed("Cannot find username")
|
||||
}
|
||||
|
||||
private fun getSortKey(sortOrder: SortOrder?) = when (sortOrder) {
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.base.ui.BaseActivity
|
||||
import org.koitharu.kotatsu.browser.BrowserCallback
|
||||
import org.koitharu.kotatsu.browser.BrowserClient
|
||||
import org.koitharu.kotatsu.browser.ProgressChromeClient
|
||||
import org.koitharu.kotatsu.core.model.MangaSource
|
||||
import org.koitharu.kotatsu.core.parser.MangaRepositoryAuthProvider
|
||||
import org.koitharu.kotatsu.databinding.ActivityBrowserBinding
|
||||
@@ -33,7 +34,7 @@ class SourceAuthActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallba
|
||||
setContentView(ActivityBrowserBinding.inflate(layoutInflater))
|
||||
val source = intent?.getParcelableExtra<MangaSource>(EXTRA_SOURCE)
|
||||
if (source == null) {
|
||||
finish()
|
||||
finishAfterTransition()
|
||||
return
|
||||
}
|
||||
repository = mangaRepositoryOf(source) as? MangaRepositoryAuthProvider ?: run {
|
||||
@@ -53,6 +54,10 @@ class SourceAuthActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallba
|
||||
javaScriptEnabled = true
|
||||
}
|
||||
binding.webView.webViewClient = BrowserClient(this)
|
||||
binding.webView.webChromeClient = ProgressChromeClient(binding.progressBar)
|
||||
if (savedInstanceState != null) {
|
||||
return
|
||||
}
|
||||
val url = repository.authUrl
|
||||
onTitleChanged(
|
||||
source.title,
|
||||
@@ -61,6 +66,21 @@ class SourceAuthActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallba
|
||||
binding.webView.loadUrl(url)
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
binding.webView.saveState(outState)
|
||||
}
|
||||
|
||||
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
|
||||
super.onRestoreInstanceState(savedInstanceState)
|
||||
binding.webView.restoreState(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
binding.webView.destroy()
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
android.R.id.home -> {
|
||||
binding.webView.stopLoading()
|
||||
|
||||
Reference in New Issue
Block a user