Avoid showing WebView button in reader errors if page isn't actually from web

This commit is contained in:
arkon 2024-01-06 16:55:50 -05:00
parent f8ef0f143b
commit bbd8098a61
2 changed files with 22 additions and 23 deletions

View file

@ -235,7 +235,7 @@ class PagerPageHolder(
*/ */
private fun setError() { private fun setError() {
progressIndicator.hide() progressIndicator.hide()
showErrorLayout(withOpenInWebView = false) showErrorLayout()
} }
override fun onImageLoaded() { override fun onImageLoaded() {
@ -248,8 +248,7 @@ class PagerPageHolder(
*/ */
override fun onImageLoadError() { override fun onImageLoadError() {
super.onImageLoadError() super.onImageLoadError()
progressIndicator.hide() setError()
showErrorLayout(withOpenInWebView = true)
} }
/** /**
@ -260,23 +259,27 @@ class PagerPageHolder(
viewer.activity.hideMenu() viewer.activity.hideMenu()
} }
private fun showErrorLayout(withOpenInWebView: Boolean): ReaderErrorBinding { private fun showErrorLayout(): ReaderErrorBinding {
if (errorLayout == null) { if (errorLayout == null) {
errorLayout = ReaderErrorBinding.inflate(LayoutInflater.from(context), this, true) errorLayout = ReaderErrorBinding.inflate(LayoutInflater.from(context), this, true)
errorLayout?.actionRetry?.viewer = viewer errorLayout?.actionRetry?.viewer = viewer
errorLayout?.actionRetry?.setOnClickListener { errorLayout?.actionRetry?.setOnClickListener {
page.chapter.pageLoader?.retryPage(page) page.chapter.pageLoader?.retryPage(page)
} }
}
val imageUrl = page.imageUrl val imageUrl = page.imageUrl
if (imageUrl.orEmpty().startsWith("http", true)) { errorLayout?.actionOpenInWebView?.isVisible = imageUrl != null
if (imageUrl != null) {
if (imageUrl.startsWith("http", true)) {
errorLayout?.actionOpenInWebView?.viewer = viewer errorLayout?.actionOpenInWebView?.viewer = viewer
errorLayout?.actionOpenInWebView?.setOnClickListener { errorLayout?.actionOpenInWebView?.setOnClickListener {
val intent = WebViewActivity.newIntent(context, imageUrl!!) val intent = WebViewActivity.newIntent(context, imageUrl)
context.startActivity(intent) context.startActivity(intent)
} }
} }
} }
errorLayout?.actionOpenInWebView?.isVisible = withOpenInWebView
errorLayout?.root?.isVisible = true errorLayout?.root?.isVisible = true
return errorLayout!! return errorLayout!!
} }

View file

@ -80,7 +80,7 @@ class WebtoonPageHolder(
refreshLayoutParams() refreshLayoutParams()
frame.onImageLoaded = { onImageDecoded() } frame.onImageLoaded = { onImageDecoded() }
frame.onImageLoadError = { onImageDecodeError() } frame.onImageLoadError = { setError() }
frame.onScaleChanged = { viewer.activity.hideMenu() } frame.onScaleChanged = { viewer.activity.hideMenu() }
} }
@ -240,7 +240,7 @@ class WebtoonPageHolder(
*/ */
private fun setError() { private fun setError() {
progressContainer.isVisible = false progressContainer.isVisible = false
initErrorLayout(withOpenInWebView = false) initErrorLayout()
} }
/** /**
@ -251,14 +251,6 @@ class WebtoonPageHolder(
removeErrorLayout() removeErrorLayout()
} }
/**
* Called when the image fails to decode.
*/
private fun onImageDecodeError() {
progressContainer.isVisible = false
initErrorLayout(withOpenInWebView = true)
}
/** /**
* Creates a new progress bar. * Creates a new progress bar.
*/ */
@ -278,22 +270,26 @@ class WebtoonPageHolder(
/** /**
* Initializes a button to retry pages. * Initializes a button to retry pages.
*/ */
private fun initErrorLayout(withOpenInWebView: Boolean): ReaderErrorBinding { private fun initErrorLayout(): ReaderErrorBinding {
if (errorLayout == null) { if (errorLayout == null) {
errorLayout = ReaderErrorBinding.inflate(LayoutInflater.from(context), frame, true) errorLayout = ReaderErrorBinding.inflate(LayoutInflater.from(context), frame, true)
errorLayout?.root?.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, (parentHeight * 0.8).toInt()) errorLayout?.root?.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, (parentHeight * 0.8).toInt())
errorLayout?.actionRetry?.setOnClickListener { errorLayout?.actionRetry?.setOnClickListener {
page?.let { it.chapter.pageLoader?.retryPage(it) } page?.let { it.chapter.pageLoader?.retryPage(it) }
} }
}
val imageUrl = page?.imageUrl val imageUrl = page?.imageUrl
if (imageUrl.orEmpty().startsWith("http", true)) { errorLayout?.actionOpenInWebView?.isVisible = imageUrl != null
if (imageUrl != null) {
if (imageUrl.startsWith("http", true)) {
errorLayout?.actionOpenInWebView?.setOnClickListener { errorLayout?.actionOpenInWebView?.setOnClickListener {
val intent = WebViewActivity.newIntent(context, imageUrl!!) val intent = WebViewActivity.newIntent(context, imageUrl)
context.startActivity(intent) context.startActivity(intent)
} }
} }
} }
errorLayout?.actionOpenInWebView?.isVisible = withOpenInWebView
return errorLayout!! return errorLayout!!
} }