From a6f1e917474f137a1e384a2a7581ff1bfd4cecfc Mon Sep 17 00:00:00 2001 From: tarsin Date: Tue, 14 Feb 2023 12:33:33 +0800 Subject: [PATCH] Add error message support for reader, Resolve #788 --- .../hippo/ehviewer/gallery/ArchivePageLoader.java | 4 ++-- .../com/hippo/ehviewer/gallery/EhPageLoader.java | 12 ++++++------ .../java/eu/kanade/tachiyomi/source/model/Page.kt | 2 ++ .../kanade/tachiyomi/ui/reader/loader/PageLoader.kt | 3 ++- .../ui/reader/viewer/pager/PagerPageHolder.kt | 1 + .../ui/reader/viewer/webtoon/WebtoonPageHolder.kt | 1 + app/src/main/res/layout/reader_error.xml | 1 + 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.java b/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.java index f2e28019f..4584b436b 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ArchivePageLoader.java @@ -293,7 +293,7 @@ public class ArchivePageLoader extends PageLoader2 { // Check index valid if (index < 0 || index >= size) { - notifyPageFailed(index); + notifyPageFailed(index, null); continue; } @@ -343,7 +343,7 @@ public class ArchivePageLoader extends PageLoader2 { if (image != null) { notifyPageSucceed(index, image); } else { - notifyPageFailed(index); + notifyPageFailed(index, null); } } } diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/EhPageLoader.java b/app/src/main/java/com/hippo/ehviewer/gallery/EhPageLoader.java index 07c56717a..a970a4dd8 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/EhPageLoader.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/EhPageLoader.java @@ -127,8 +127,8 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis Object object = mSpiderQueen.request(index); if (object instanceof Float) { notifyPagePercent(index, (Float) object); - } else if (object instanceof String) { - notifyPageFailed(index); + } else if (object instanceof String error) { + notifyPageFailed(index, error); } else if (object == null) { notifyPageWait(index); } @@ -141,8 +141,8 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis Object object = mSpiderQueen.forceRequest(index); if (object instanceof Float) { notifyPagePercent(index, (Float) object); - } else if (object instanceof String) { - notifyPageFailed(index); + } else if (object instanceof String error) { + notifyPageFailed(index, error); } else if (object == null) { notifyPageWait(index); } @@ -191,7 +191,7 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis @Override public void onPageFailure(int index, String error, int finished, int downloaded, int total) { - notifyPageFailed(index); + notifyPageFailed(index, error); } @Override @@ -205,7 +205,7 @@ public class EhPageLoader extends PageLoader2 implements SpiderQueen.OnSpiderLis @Override public void onGetImageFailure(int index, String error) { - notifyPageFailed(index); + notifyPageFailed(index, error); } @Override diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt index c1e695893..2ce45cd46 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt @@ -10,6 +10,8 @@ open class Page(val index: Int) { var status = MutableStateFlow(State.QUEUE) + var errorMsg: String? = null + private val _progressFlow = MutableStateFlow(0) val progressFlow = _progressFlow.asStateFlow() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt index 1fbdbd77b..699814b11 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/PageLoader.kt @@ -89,7 +89,8 @@ abstract class PageLoader { mPages[index].status.value = Page.State.READY } - fun notifyPageFailed(index: Int) { + fun notifyPageFailed(index: Int, error: String?) { + mPages[index].errorMsg = error mPages[index].status.value = Page.State.ERROR } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index 94758e7a7..088cd0654 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -205,6 +205,7 @@ class PagerPageHolder( viewer.activity.mGalleryProvider?.retryPage(page) } } + page.errorMsg?.let { errorLayout!!.errorMessage.text = it } errorLayout?.root?.isVisible = true return errorLayout!! } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt index 211712955..84c1de9db 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt @@ -255,6 +255,7 @@ class WebtoonPageHolder( viewer.activity.mGalleryProvider?.retryPage(page!!) } } + page?.errorMsg?.let { errorLayout!!.errorMessage.text = it } return errorLayout!! } diff --git a/app/src/main/res/layout/reader_error.xml b/app/src/main/res/layout/reader_error.xml index 27e7c0df6..aadc3fb27 100644 --- a/app/src/main/res/layout/reader_error.xml +++ b/app/src/main/res/layout/reader_error.xml @@ -7,6 +7,7 @@ android:gravity="center">