From 5eca2bdf28b6a760b29768b3150356683468b924 Mon Sep 17 00:00:00 2001 From: Two-Ai <81279822+Two-Ai@users.noreply.github.com> Date: Wed, 7 Dec 2022 18:28:38 -0500 Subject: [PATCH] Cleanup Page status (#8696) * Cleanup Page statusSubject and statusCallback * Convert Page status from Int to enum (cherry picked from commit 6ca32710be5bfed851ab695a0d9438c7ab609b24) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt --- .../data/download/DownloadManager.kt | 2 +- .../tachiyomi/data/download/Downloader.kt | 6 +-- .../data/download/model/DownloadQueue.kt | 8 ++-- .../ui/library/LibraryScreenModel.kt | 6 +-- .../tachiyomi/ui/reader/ReaderActivity.kt | 10 ++--- .../tachiyomi/ui/reader/ReaderPageSheet.kt | 2 +- .../tachiyomi/ui/reader/ReaderPresenter.kt | 14 +++---- .../ui/reader/loader/DirectoryPageLoader.kt | 6 +-- .../ui/reader/loader/DownloadPageLoader.kt | 6 +-- .../ui/reader/loader/EpubPageLoader.kt | 8 ++-- .../ui/reader/loader/HttpPageLoader.kt | 40 +++++++++---------- .../tachiyomi/ui/reader/loader/PageLoader.kt | 6 +-- .../ui/reader/loader/RarPageLoader.kt | 8 ++-- .../ui/reader/loader/ZipPageLoader.kt | 8 ++-- .../tachiyomi/ui/reader/model/StencilPage.kt | 2 +- .../ui/reader/viewer/pager/PagerPageHolder.kt | 32 +++++++-------- .../viewer/webtoon/WebtoonPageHolder.kt | 12 +++--- .../eu/kanade/tachiyomi/source/model/Page.kt | 32 ++++----------- .../source/online/HttpSourceFetcher.kt | 4 +- 19 files changed, 98 insertions(+), 114 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index 1aa4438af..d2149c28d 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -182,7 +182,7 @@ class DownloadManager( files.sortedBy { it.name } .mapIndexed { i, file -> - Page(i, uri = file.uri).apply { status = Page.READY } + Page(i, uri = file.uri).apply { status = Page.State.READY } } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 07a95c411..a601d0333 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -414,13 +414,13 @@ class Downloader( page.uri = file.uri page.progress = 100 download.downloadedImages++ - page.status = Page.READY + page.status = Page.State.READY } .map { page } // Mark this page as error and allow to download the remaining .onErrorReturn { page.progress = 0 - page.status = Page.ERROR + page.status = Page.State.ERROR notifier.onError(it.message, download.chapter.name, download.manga.title) page } @@ -435,7 +435,7 @@ class Downloader( * @param filename the filename of the image. */ private fun downloadImage(page: Page, source: HttpSource, tmpDir: UniFile, filename: String, dataSaver: DataSaver): Observable { - page.status = Page.DOWNLOAD_IMAGE + page.status = Page.State.DOWNLOAD_IMAGE page.progress = 0 return source.fetchImage(page, dataSaver) .map { response -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt index 07c81075f..6a9245460 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt @@ -100,11 +100,11 @@ class DownloadQueue( .startWith(getActiveDownloads()) .flatMap { download -> if (download.status == Download.State.DOWNLOADING) { - val pageStatusSubject = PublishSubject.create() + val pageStatusSubject = PublishSubject.create() setPagesSubject(download.pages, pageStatusSubject) return@flatMap pageStatusSubject .onBackpressureBuffer() - .filter { it == Page.READY } + .filter { it == Page.State.READY } .map { download } } else if (download.status == Download.State.DOWNLOADED || download.status == Download.State.ERROR) { setPagesSubject(download.pages, null) @@ -120,7 +120,7 @@ class DownloadQueue( } } - private fun setPagesSubject(pages: List?, subject: PublishSubject?) { - pages?.forEach { it.setStatusSubject(subject) } + private fun setPagesSubject(pages: List?, subject: PublishSubject?) { + pages?.forEach { it.statusSubject = subject } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index 30bf9b69c..6cf3b347b 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -167,7 +167,7 @@ class LibraryScreenModel( combine( state.map { it.groupType }.distinctUntilChanged(), libraryPreferences.libraryDisplayMode().changes(), - libraryPreferences.librarySortingMode().changes() + libraryPreferences.librarySortingMode().changes(), ) { a, b, c -> Triple(a, b, c) }, @@ -178,7 +178,7 @@ class LibraryScreenModel( // SY --> .applyGrouping(groupType, displayMode) // SY <-- - .applySort(/* SY --> */sort.takeIf { groupType != LibraryGroup.BY_DEFAULT }/* SY <-- */) + .applySort(/* SY --> */sort.takeIf { groupType != LibraryGroup.BY_DEFAULT } /* SY <-- */) .mapValues { (_, value) -> if (searchQuery != null) { // Filter query @@ -1175,7 +1175,7 @@ class LibraryScreenModel( private fun getGroupedMangaItems( groupType: Int, libraryManga: List, - displayMode: LibraryDisplayMode + displayMode: LibraryDisplayMode, ): LibraryMap { val context = preferences.context return when (groupType) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index faeb1d66d..eabcd5d40 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -809,7 +809,7 @@ class ReaderActivity : .pages ?.forEachIndexed { _, page -> var shouldQueuePage = false - if (page.status == Page.ERROR) { + if (page.status == Page.State.ERROR) { shouldQueuePage = true } /*else if (page.status == Page.LOAD_PAGE || page.status == Page.DOWNLOAD_IMAGE) { @@ -817,7 +817,7 @@ class ReaderActivity : }*/ if (shouldQueuePage) { - page.status = Page.QUEUE + page.status = Page.State.QUEUE } else { return@forEachIndexed } @@ -858,11 +858,11 @@ class ReaderActivity : return@setOnClickListener } - if (curPage.status == Page.ERROR) { + if (curPage.status == Page.State.ERROR) { toast(R.string.eh_boost_page_errored) - } else if (curPage.status == Page.LOAD_PAGE || curPage.status == Page.DOWNLOAD_IMAGE) { + } else if (curPage.status == Page.State.LOAD_PAGE || curPage.status == Page.State.DOWNLOAD_IMAGE) { toast(R.string.eh_boost_page_downloading) - } else if (curPage.status == Page.READY) { + } else if (curPage.status == Page.State.READY) { toast(R.string.eh_boost_page_downloaded) } else { val loader = (presenter.viewerChaptersRelay.value.currChapter.pageLoader as? HttpPageLoader) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt index 4b241abb9..78163fc0e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt @@ -55,7 +55,7 @@ class ReaderPageSheet( * Sets the image of this page as the cover of the manga. */ private fun setAsCover(page: ReaderPage) { - if (page.status != Page.READY) return + if (page.status != Page.State.READY) return MaterialAlertDialogBuilder(activity) .setMessage(R.string.confirm_set_image_as_cover) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 736203a78..f19301d61 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -848,7 +848,7 @@ class ReaderPresenter( * There's also a notification to allow sharing the image somewhere else or deleting it. */ fun saveImage(page: ReaderPage) { - if (page.status != Page.READY) return + if (page.status != Page.State.READY) return val manga = manga ?: return val context = Injekt.get() @@ -883,8 +883,8 @@ class ReaderPresenter( // SY --> fun saveImages(firstPage: ReaderPage, secondPage: ReaderPage, isLTR: Boolean, @ColorInt bg: Int) { - if (firstPage.status != Page.READY) return - if (secondPage.status != Page.READY) return + if (firstPage.status != Page.State.READY) return + if (secondPage.status != Page.State.READY) return val manga = manga ?: return val context = Injekt.get() @@ -957,7 +957,7 @@ class ReaderPresenter( * image will be kept so it won't be taking lots of internal disk space. */ fun shareImage(page: ReaderPage) { - if (page.status != Page.READY) return + if (page.status != Page.State.READY) return val manga = manga ?: return val context = Injekt.get() @@ -986,8 +986,8 @@ class ReaderPresenter( // SY --> fun shareImages(firstPage: ReaderPage, secondPage: ReaderPage, isLTR: Boolean, @ColorInt bg: Int) { - if (firstPage.status != Page.READY) return - if (secondPage.status != Page.READY) return + if (firstPage.status != Page.State.READY) return + if (secondPage.status != Page.State.READY) return val manga = manga ?: return val context = Injekt.get() @@ -1018,7 +1018,7 @@ class ReaderPresenter( * Sets the image of this [page] as cover and notifies the UI of the result. */ fun setAsCover(context: Context, page: ReaderPage) { - if (page.status != Page.READY) return + if (page.status != Page.State.READY) return val manga = manga?.toDomainManga() ?: return val stream = page.stream ?: return diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt index aba79147f..3de2de03b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt @@ -25,7 +25,7 @@ class DirectoryPageLoader(val file: File) : PageLoader() { val streamFn = { FileInputStream(file) } ReaderPage(i).apply { stream = streamFn - status = Page.READY + status = Page.State.READY } } .let { Observable.just(it) } @@ -34,7 +34,7 @@ class DirectoryPageLoader(val file: File) : PageLoader() { /** * Returns an observable that emits a ready state. */ - override fun getPage(page: ReaderPage): Observable { - return Observable.just(Page.READY) + override fun getPage(page: ReaderPage): Observable { + return Observable.just(Page.State.READY) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt index 86891e73f..bdd89a7f8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt @@ -54,13 +54,13 @@ class DownloadPageLoader( ReaderPage(page.index, page.url, page.imageUrl) { context.contentResolver.openInputStream(page.uri ?: Uri.EMPTY)!! }.apply { - status = Page.READY + status = Page.State.READY } } } } - override fun getPage(page: ReaderPage): Observable { - return Observable.just(Page.READY) + override fun getPage(page: ReaderPage): Observable { + return Observable.just(Page.State.READY) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt index 611d21882..3aafabe65 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt @@ -34,7 +34,7 @@ class EpubPageLoader(file: File) : PageLoader() { val streamFn = { epub.getInputStream(epub.getEntry(path)!!) } ReaderPage(i).apply { stream = streamFn - status = Page.READY + status = Page.State.READY } } .let { Observable.just(it) } @@ -43,12 +43,12 @@ class EpubPageLoader(file: File) : PageLoader() { /** * Returns an observable that emits a ready state unless the loader was recycled. */ - override fun getPage(page: ReaderPage): Observable { + override fun getPage(page: ReaderPage): Observable { return Observable.just( if (isRecycled) { - Page.ERROR + Page.State.ERROR } else { - Page.READY + Page.State.READY }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt index f98e23c8b..f177e361f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt @@ -60,7 +60,7 @@ class HttpPageLoader( repeat(readerPreferences.readerThreads().get()) { // EXH <-- subscriptions += Observable.defer { Observable.just(queue.take().page) } - .filter { it.status == Page.QUEUE } + .filter { it.status == Page.State.QUEUE } .concatMap { source.fetchImageFromCacheThenNet(it) } .repeat() .subscribeOn(Schedulers.io()) @@ -116,7 +116,7 @@ class HttpPageLoader( } if (readerPreferences.aggressivePageLoading().get()) { rp.forEach { - if (it.status == Page.QUEUE) { + if (it.status == Page.State.QUEUE) { queue.offer(PriorityPage(it, 0)) } } @@ -130,25 +130,25 @@ class HttpPageLoader( * Returns an observable that loads a page through the queue and listens to its result to * emit new states. It handles re-enqueueing pages if they were evicted from the cache. */ - override fun getPage(page: ReaderPage): Observable { + override fun getPage(page: ReaderPage): Observable { return Observable.defer { val imageUrl = page.imageUrl // Check if the image has been deleted - if (page.status == Page.READY && imageUrl != null && !chapterCache.isImageInCache(imageUrl)) { - page.status = Page.QUEUE + if (page.status == Page.State.READY && imageUrl != null && !chapterCache.isImageInCache(imageUrl)) { + page.status = Page.State.QUEUE } // Automatically retry failed pages when subscribed to this page - if (page.status == Page.ERROR) { - page.status = Page.QUEUE + if (page.status == Page.State.ERROR) { + page.status = Page.State.QUEUE } - val statusSubject = SerializedSubject(PublishSubject.create()) - page.setStatusSubject(statusSubject) + val statusSubject = SerializedSubject(PublishSubject.create()) + page.statusSubject = statusSubject val queuedPages = mutableListOf() - if (page.status == Page.QUEUE) { + if (page.status == Page.State.QUEUE) { queuedPages += PriorityPage(page, 1).also { queue.offer(it) } } queuedPages += preloadNextPages(page, preloadSize) @@ -156,7 +156,7 @@ class HttpPageLoader( statusSubject.startWith(page.status) .doOnUnsubscribe { queuedPages.forEach { - if (it.page.status == Page.QUEUE) { + if (it.page.status == Page.State.QUEUE) { queue.remove(it) } } @@ -178,7 +178,7 @@ class HttpPageLoader( return pages .subList(pageIndex + 1, min(pageIndex + 1 + amount, pages.size)) .mapNotNull { - if (it.status == Page.QUEUE) { + if (it.status == Page.State.QUEUE) { PriorityPage(it, 0).apply { queue.offer(this) } } else { null @@ -190,8 +190,8 @@ class HttpPageLoader( * Retries a page. This method is only called from user interaction on the viewer. */ override fun retryPage(page: ReaderPage) { - if (page.status == Page.ERROR) { - page.status = Page.QUEUE + if (page.status == Page.State.ERROR) { + page.status = Page.State.QUEUE } // EXH --> // Grab a new image URL on EXH sources @@ -241,9 +241,9 @@ class HttpPageLoader( } private fun HttpSource.getImageUrl(page: ReaderPage): Observable { - page.status = Page.LOAD_PAGE + page.status = Page.State.LOAD_PAGE return fetchImageUrl(page) - .doOnError { page.status = Page.ERROR } + .doOnError { page.status = Page.State.ERROR } .onErrorReturn { null } .doOnNext { page.imageUrl = it } .map { page } @@ -268,9 +268,9 @@ class HttpPageLoader( } .doOnNext { page.stream = { chapterCache.getImageFile(imageUrl).inputStream() } - page.status = Page.READY + page.status = Page.State.READY } - .doOnError { page.status = Page.ERROR } + .doOnError { page.status = Page.State.ERROR } .onErrorReturn { page } } @@ -280,7 +280,7 @@ class HttpPageLoader( * @param page the page. */ private fun HttpSource.cacheImage(page: ReaderPage): Observable { - page.status = Page.DOWNLOAD_IMAGE + page.status = Page.State.DOWNLOAD_IMAGE return fetchImage(page, dataSaver) .doOnNext { chapterCache.putImageToCache(page.imageUrl!!, it) @@ -290,7 +290,7 @@ class HttpPageLoader( // EXH --> fun boostPage(page: ReaderPage) { - if (page.status == Page.QUEUE) { + if (page.status == Page.State.QUEUE) { subscriptions += Observable.just(page) .concatMap { source.fetchImageFromCacheThenNet(it) } .subscribeOn(Schedulers.io()) 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 de7e4e541..ea224bd9b 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 @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.reader.loader import androidx.annotation.CallSuper +import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import rx.Observable @@ -32,10 +33,9 @@ abstract class PageLoader { abstract fun getPages(): Observable> /** - * Returns an observable that should inform of the progress of the page (see the Page class - * for the available states) + * Returns an observable that should inform of the progress of the page */ - abstract fun getPage(page: ReaderPage): Observable + abstract fun getPage(page: ReaderPage): Observable /** * Retries the given [page] in case it failed to load. This method only makes sense when an diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt index 5d9489317..22269fd57 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt @@ -48,7 +48,7 @@ class RarPageLoader(file: File) : PageLoader() { .mapIndexed { i, header -> ReaderPage(i).apply { stream = { getStream(header) } - status = Page.READY + status = Page.State.READY } } .let { Observable.just(it.toList()) } @@ -57,12 +57,12 @@ class RarPageLoader(file: File) : PageLoader() { /** * Returns an observable that emits a ready state unless the loader was recycled. */ - override fun getPage(page: ReaderPage): Observable { + override fun getPage(page: ReaderPage): Observable { return Observable.just( if (isRecycled) { - Page.ERROR + Page.State.ERROR } else { - Page.READY + Page.State.READY }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt index 3db97c8fa..bb8fcc408 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt @@ -43,7 +43,7 @@ class ZipPageLoader(file: File) : PageLoader() { .mapIndexed { i, entry -> ReaderPage(i).apply { stream = { zip.getInputStream(entry) } - status = Page.READY + status = Page.State.READY } } .let { Observable.just(it.toList()) } @@ -52,12 +52,12 @@ class ZipPageLoader(file: File) : PageLoader() { /** * Returns an observable that emits a ready state unless the loader was recycled. */ - override fun getPage(page: ReaderPage): Observable { + override fun getPage(page: ReaderPage): Observable { return Observable.just( if (isRecycled) { - Page.ERROR + Page.State.ERROR } else { - Page.READY + Page.State.READY }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/StencilPage.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/StencilPage.kt index 9bd24a344..c5a7ee79f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/StencilPage.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/StencilPage.kt @@ -10,7 +10,7 @@ class StencilPage( override var chapter: ReaderChapter = parent.chapter init { - status = READY + status = State.READY stream = stencilStream } } 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 1e9a720a0..8e66c1497 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 @@ -89,8 +89,8 @@ class PagerPageHolder( private var readImageHeaderSubscription: Subscription? = null // SY --> - var status: Int = 0 - var extraStatus: Int = 0 + var status: Page.State = Page.State.QUEUE + var extraStatus: Page.State = Page.State.QUEUE var progress: Int = 0 var extraProgress: Int = 0 // SY <-- @@ -172,21 +172,21 @@ class PagerPageHolder( * * @param status the new status of the page. */ - private fun processStatus(status: Int) { + private fun processStatus(status: Page.State) { when (status) { - Page.QUEUE -> setQueued() - Page.LOAD_PAGE -> setLoading() - Page.DOWNLOAD_IMAGE -> { + Page.State.QUEUE -> setQueued() + Page.State.LOAD_PAGE -> setLoading() + Page.State.DOWNLOAD_IMAGE -> { observeProgress() setDownloading() } - Page.READY -> { - if (extraStatus == Page.READY || extraPage == null) { + Page.State.READY -> { + if (extraStatus == Page.State.READY || extraPage == null) { setImage() } unsubscribeProgress(1) } - Page.ERROR -> { + Page.State.ERROR -> { setError() unsubscribeProgress(1) } @@ -198,21 +198,21 @@ class PagerPageHolder( * * @param status the new status of the page. */ - private fun processStatus2(status: Int) { + private fun processStatus2(status: Page.State) { when (status) { - Page.QUEUE -> setQueued() - Page.LOAD_PAGE -> setLoading() - Page.DOWNLOAD_IMAGE -> { + Page.State.QUEUE -> setQueued() + Page.State.LOAD_PAGE -> setLoading() + Page.State.DOWNLOAD_IMAGE -> { observeProgress2() setDownloading() } - Page.READY -> { - if (this.status == Page.READY) { + Page.State.READY -> { + if (this.status == Page.State.READY) { setImage() } unsubscribeProgress(2) } - Page.ERROR -> { + Page.State.ERROR -> { setError() unsubscribeProgress(2) } 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 ad3db8e49..5755cad21 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 @@ -165,19 +165,19 @@ class WebtoonPageHolder( * * @param status the new status of the page. */ - private fun processStatus(status: Int) { + private fun processStatus(status: Page.State) { when (status) { - Page.QUEUE -> setQueued() - Page.LOAD_PAGE -> setLoading() - Page.DOWNLOAD_IMAGE -> { + Page.State.QUEUE -> setQueued() + Page.State.LOAD_PAGE -> setLoading() + Page.State.DOWNLOAD_IMAGE -> { observeProgress() setDownloading() } - Page.READY -> { + Page.State.READY -> { setImage() unsubscribeProgress() } - Page.ERROR -> { + Page.State.ERROR -> { setError() unsubscribeProgress() } diff --git a/source-api/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt b/source-api/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt index da0092b5d..9ec0f3882 100755 --- a/source-api/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt +++ b/source-api/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt @@ -20,26 +20,18 @@ open class Page( @Transient @Volatile - var status: Int = 0 + var status: State = State.QUEUE set(value) { field = value statusSubject?.onNext(value) - statusCallback?.invoke(this) } @Transient @Volatile var progress: Int = 0 - set(value) { - field = value - statusCallback?.invoke(this) - } @Transient - private var statusSubject: Subject? = null - - @Transient - private var statusCallback: ((Page) -> Unit)? = null + var statusSubject: Subject? = null override fun update(bytesRead: Long, contentLength: Long, done: Boolean) { progress = if (contentLength > 0) { @@ -49,19 +41,11 @@ open class Page( } } - fun setStatusSubject(subject: Subject?) { - this.statusSubject = subject - } - - fun setStatusCallback(f: ((Page) -> Unit)?) { - statusCallback = f - } - - companion object { - const val QUEUE = 0 - const val LOAD_PAGE = 1 - const val DOWNLOAD_IMAGE = 2 - const val READY = 3 - const val ERROR = 4 + enum class State { + QUEUE, + LOAD_PAGE, + DOWNLOAD_IMAGE, + READY, + ERROR, } } diff --git a/source-api/src/main/java/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt b/source-api/src/main/java/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt index 7b3ea4bde..6b5e4a638 100755 --- a/source-api/src/main/java/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt +++ b/source-api/src/main/java/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt @@ -4,9 +4,9 @@ import eu.kanade.tachiyomi.source.model.Page import rx.Observable fun HttpSource.getImageUrl(page: Page): Observable { - page.status = Page.LOAD_PAGE + page.status = Page.State.LOAD_PAGE return fetchImageUrl(page) - .doOnError { page.status = Page.ERROR } + .doOnError { page.status = Page.State.ERROR } .onErrorReturn { null } .doOnNext { page.imageUrl = it } .map { page }