Show error details for pages

This commit is contained in:
Koitharu
2023-02-21 18:59:52 +02:00
parent 35366ac660
commit 73c1d2a616
6 changed files with 42 additions and 58 deletions

View File

@@ -1,5 +1,6 @@
package org.koitharu.kotatsu.reader.ui.pager
import android.content.Context
import android.net.Uri
import androidx.core.net.toUri
import androidx.lifecycle.Observer
@@ -59,6 +60,11 @@ class PageHolderDelegate(
}
}
fun showErrorDetails(context: Context) {
val e = error ?: return
ExceptionResolver.showDetails(context, e)
}
fun onAttachedToWindow() {
readerSettings.observeForever(this)
}
@@ -87,6 +93,7 @@ class PageHolderDelegate(
}
override fun onImageLoadError(e: Throwable) {
e.printStackTraceDebug()
val file = this.file
error = e
if (state == State.LOADED && e is IOException && file != null && file.exists()) {

View File

@@ -33,8 +33,8 @@ open class PageHolder(
binding.ssiv.bindToLifecycle(owner)
binding.ssiv.isEagerLoadingEnabled = !isLowRamDevice(context)
binding.ssiv.addOnImageEventListener(delegate)
@Suppress("LeakingThis")
bindingInfo.buttonRetry.setOnClickListener(this)
bindingInfo.buttonErrorDetails.setOnClickListener(this)
binding.textViewNumber.isVisible = settings.isPagesNumbersEnabled
}
@@ -115,6 +115,7 @@ open class PageHolder(
override fun onClick(v: View) {
when (v.id) {
R.id.button_retry -> delegate.retry(boundData?.toMangaPage() ?: return)
R.id.button_error_details -> delegate.showErrorDetails(v.context)
}
}

View File

@@ -19,7 +19,6 @@ import org.koitharu.kotatsu.utils.GoneOnInvisibleListener
import org.koitharu.kotatsu.utils.ext.getDisplayMessage
import org.koitharu.kotatsu.utils.ext.hideCompat
import org.koitharu.kotatsu.utils.ext.ifZero
import org.koitharu.kotatsu.utils.ext.setProgressCompat
import org.koitharu.kotatsu.utils.ext.showCompat
class WebtoonHolder(
@@ -40,6 +39,7 @@ class WebtoonHolder(
binding.ssiv.regionDecoderFactory = SkiaPooledImageRegionDecoder.Factory()
binding.ssiv.addOnImageEventListener(delegate)
bindingInfo.buttonRetry.setOnClickListener(this)
bindingInfo.buttonErrorDetails.setOnClickListener(this)
}
override fun onBind(data: ReaderPage) {
@@ -104,6 +104,7 @@ class WebtoonHolder(
override fun onClick(v: View) {
when (v.id) {
R.id.button_retry -> delegate.retry(boundData?.toMangaPage() ?: return)
R.id.button_error_details -> delegate.showErrorDetails(v.context)
}
}