Fix title in BrowserActivity

This commit is contained in:
Koitharu
2021-01-28 20:33:20 +02:00
parent 0e384c134d
commit 33296217a4
7 changed files with 32 additions and 48 deletions

View File

@@ -33,6 +33,10 @@ class BrowserActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallback
if (url.isNullOrEmpty()) {
finishAfterTransition()
} else {
onTitleChanged(
intent?.getStringExtra(EXTRA_TITLE) ?: getString(R.string.loading_),
url
)
binding.webView.loadUrl(url)
}
}
@@ -94,7 +98,12 @@ class BrowserActivity : BaseActivity<ActivityBrowserBinding>(), BrowserCallback
companion object {
fun newIntent(context: Context, url: String) = Intent(context, BrowserActivity::class.java)
.setData(Uri.parse(url))
private const val EXTRA_TITLE = "title"
fun newIntent(context: Context, url: String, title: String?): Intent {
return Intent(context, BrowserActivity::class.java)
.setData(Uri.parse(url))
.putExtra(EXTRA_TITLE, title)
}
}
}

View File

@@ -1,16 +1,15 @@
package org.koitharu.kotatsu.browser
import android.graphics.Bitmap
import android.webkit.WebResourceRequest
import android.webkit.WebResourceResponse
import android.webkit.WebView
import android.webkit.WebViewClient
import okhttp3.OkHttpClient
import okhttp3.Request
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import org.koitharu.kotatsu.core.network.WebViewClientCompat
class BrowserClient(private val callback: BrowserCallback) : WebViewClient(), KoinComponent {
class BrowserClient(private val callback: BrowserCallback) : WebViewClientCompat(), KoinComponent {
private val okHttp by inject<OkHttpClient>()
@@ -29,31 +28,18 @@ class BrowserClient(private val callback: BrowserCallback) : WebViewClient(), Ko
callback.onTitleChanged(view.title.orEmpty(), url)
}
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?) = false
override fun shouldOverrideUrlLoading(view: WebView, url: String) = false
override fun shouldInterceptRequest(view: WebView?, url: String?): WebResourceResponse? {
return url?.let(::doRequest)
override fun shouldInterceptRequestCompat(view: WebView, url: String): WebResourceResponse? {
return runCatching {
val request = Request.Builder()
.url(url)
.build()
val response = okHttp.newCall(request).execute()
val ct = response.body?.contentType()
WebResourceResponse(
"${ct?.type}/${ct?.subtype}",
ct?.charset()?.name() ?: "utf-8",
response.body?.byteStream()
)
}.getOrNull()
}
override fun shouldInterceptRequest(
view: WebView?,
request: WebResourceRequest?
): WebResourceResponse? {
return request?.url?.toString()?.let(::doRequest)
}
private fun doRequest(url: String): WebResourceResponse? = runCatching {
val request = Request.Builder()
.url(url)
.build()
val response = okHttp.newCall(request).execute()
val ct = response.body?.contentType()
WebResourceResponse(
"${ct?.type}/${ct?.subtype}",
ct?.charset()?.name() ?: "utf-8",
response.body?.byteStream()
)
}.getOrNull()
}

View File

@@ -183,7 +183,7 @@ class DetailsActivity : BaseActivity<ActivityDetailsBinding>(),
}
R.id.action_browser -> {
viewModel.manga.value?.let {
startActivity(BrowserActivity.newIntent(this, it.url))
startActivity(BrowserActivity.newIntent(this, it.url, it.title))
}
true
}

View File

@@ -80,8 +80,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
} ?: run {
openDefaultSection()
}
TrackWorker.setup(applicationContext)
AppUpdateChecker(this).launchIfNeeded()
if (savedInstanceState == null) {
TrackWorker.setup(applicationContext)
AppUpdateChecker(this).launchIfNeeded()
}
viewModel.onOpenReader.observe(this, this::onOpenReader)
viewModel.onError.observe(this, this::onError)