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 e2eee8414..33c504b29 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 @@ -179,7 +179,7 @@ class DownloadManager( return files.sortedBy { it.name } .mapIndexed { i, file -> - Page(i, uri = file.uri).apply { status = Page.State.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 c2208e85f..31bcc5664 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 @@ -379,11 +379,11 @@ class Downloader( flow { // Fetch image URL if necessary if (page.imageUrl.isNullOrEmpty()) { - page.status = Page.State.LOAD_PAGE + page.status = Page.State.LoadPage try { page.imageUrl = download.source.getImageUrl(page) } catch (e: Throwable) { - page.status = Page.State.ERROR + page.status = Page.State.Error } } @@ -469,12 +469,12 @@ class Downloader( page.uri = file.uri page.progress = 100 - page.status = Page.State.READY + page.status = Page.State.Ready } catch (e: Throwable) { if (e is CancellationException) throw e // Mark this page as error and allow to download the remaining page.progress = 0 - page.status = Page.State.ERROR + page.status = Page.State.Error notifier.onError(e.message, download.chapter.name, download.manga.title, download.manga.id) } } @@ -494,7 +494,7 @@ class Downloader( filename: String, dataSaver: DataSaver, ): UniFile { - page.status = Page.State.DOWNLOAD_IMAGE + page.status = Page.State.DownloadImage page.progress = 0 return flow { val response = source.getImage(page, dataSaver) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt index 564a33633..1b14b0827 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt @@ -29,7 +29,7 @@ data class Download( get() = pages?.sumOf(Page::progress) ?: 0 val downloadedImages: Int - get() = pages?.count { it.status == Page.State.READY } ?: 0 + get() = pages?.count { it.status == Page.State.Ready } ?: 0 @Transient private val _statusFlow = MutableStateFlow(State.NOT_DOWNLOADED) 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 81df2a851..dc9a6bdb4 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 @@ -717,7 +717,7 @@ class ReaderActivity : BaseActivity() { ?.pages ?.forEachIndexed { _, page -> var shouldQueuePage = false - if (page.status == Page.State.ERROR) { + if (page.status == Page.State.Error) { shouldQueuePage = true } /*else if (page.status == Page.LOAD_PAGE || page.status == Page.DOWNLOAD_IMAGE) { @@ -725,7 +725,7 @@ class ReaderActivity : BaseActivity() { }*/ if (shouldQueuePage) { - page.status = Page.State.QUEUE + page.status = Page.State.Queue } else { return@forEachIndexed } @@ -758,11 +758,11 @@ class ReaderActivity : BaseActivity() { return } - if (curPage.status == Page.State.ERROR) { + if (curPage.status == Page.State.Error) { toast(SYMR.strings.eh_boost_page_errored) - } else if (curPage.status == Page.State.LOAD_PAGE || curPage.status == Page.State.DOWNLOAD_IMAGE) { + } else if (curPage.status == Page.State.LoadPage || curPage.status == Page.State.DownloadImage) { toast(SYMR.strings.eh_boost_page_downloading) - } else if (curPage.status == Page.State.READY) { + } else if (curPage.status == Page.State.Ready) { toast(SYMR.strings.eh_boost_page_downloaded) } else { val loader = (viewModel.state.value.viewerChapters?.currChapter?.pageLoader as? HttpPageLoader) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 0b1ce278d..eeec10926 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -697,7 +697,7 @@ class ReaderViewModel @JvmOverloads constructor( readerChapter.requestedPage = pageIndex chapterPageIndex = pageIndex - if (!incognitoMode && page.status != Page.State.ERROR) { + if (!incognitoMode && page.status != Page.State.Error) { readerChapter.chapter.last_page_read = pageIndex // SY --> @@ -1071,7 +1071,7 @@ class ReaderViewModel @JvmOverloads constructor( (state.value.dialog as? Dialog.PageActions)?.page } // SY <-- - if (page?.status != Page.State.READY) return + if (page?.status != Page.State.Ready) return val manga = manga ?: return val context = Injekt.get() @@ -1115,8 +1115,8 @@ class ReaderViewModel @JvmOverloads constructor( val isLTR = (viewer !is R2LPagerViewer) xor (viewer.config.invertDoublePages) val bg = viewer.config.pageCanvasColor - if (firstPage.status != Page.State.READY) return - if (secondPage?.status != Page.State.READY) return + if (firstPage.status != Page.State.Ready) return + if (secondPage?.status != Page.State.Ready) return val manga = manga ?: return @@ -1191,7 +1191,7 @@ class ReaderViewModel @JvmOverloads constructor( (state.value.dialog as? Dialog.PageActions)?.page } // SY <-- - if (page?.status != Page.State.READY) return + if (page?.status != Page.State.Ready) return val manga = manga ?: return val context = Injekt.get() @@ -1223,8 +1223,8 @@ class ReaderViewModel @JvmOverloads constructor( val isLTR = (viewer !is R2LPagerViewer) xor (viewer.config.invertDoublePages) val bg = viewer.config.pageCanvasColor - if (firstPage.status != Page.State.READY) return - if (secondPage?.status != Page.State.READY) return + if (firstPage.status != Page.State.Ready) return + if (secondPage?.status != Page.State.Ready) return val manga = manga ?: return val context = Injekt.get() @@ -1260,7 +1260,7 @@ class ReaderViewModel @JvmOverloads constructor( (state.value.dialog as? Dialog.PageActions)?.page } // SY <-- - if (page?.status != Page.State.READY) return + if (page?.status != Page.State.Ready) return val manga = manga ?: return val stream = page.stream ?: return diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ArchivePageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ArchivePageLoader.kt index f00fc25df..5e4f7e2fa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ArchivePageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ArchivePageLoader.kt @@ -90,7 +90,7 @@ internal class ArchivePageLoader(private val reader: ArchiveReader) : PageLoader // SY --> stream = { imageBytes?.copyOf()?.inputStream() ?: reader.getInputStream(entry.name)!! } // SY <-- - status = Page.State.READY + status = Page.State.Ready } } .toList() 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 8817b0682..adb92c1b4 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 @@ -21,7 +21,7 @@ internal class DirectoryPageLoader(val file: UniFile) : PageLoader() { val streamFn = { file.openInputStream() } ReaderPage(i).apply { stream = streamFn - status = Page.State.READY + status = Page.State.Ready } } .orEmpty() 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 c6a6aeadc..3a6f82847 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 @@ -57,7 +57,7 @@ internal class DownloadPageLoader( ReaderPage(page.index, page.url, page.imageUrl) { context.contentResolver.openInputStream(page.uri ?: Uri.EMPTY)!! }.apply { - status = Page.State.READY + status = 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 8ace2fdee..f6b51b8bb 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 @@ -20,7 +20,7 @@ internal class EpubPageLoader(reader: ArchiveReader) : PageLoader() { val streamFn = { epub.getInputStream(path)!! } ReaderPage(i).apply { stream = streamFn - status = Page.State.READY + status = 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 b8b2a51b3..48184c04f 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 @@ -68,7 +68,7 @@ internal class HttpPageLoader( emit(runInterruptible { queue.take() }.page) } } - .filter { it.status == Page.State.QUEUE } + .filter { it.status == Page.State.Queue } .collect(::internalLoadPage) } // EXH --> @@ -98,7 +98,7 @@ internal class HttpPageLoader( } if (readerPreferences.aggressivePageLoading().get()) { rp.forEach { - if (it.status == Page.State.QUEUE) { + if (it.status == Page.State.Queue) { queue.offer(PriorityPage(it, 0)) } } @@ -114,17 +114,17 @@ internal class HttpPageLoader( val imageUrl = page.imageUrl // Check if the image has been deleted - if (page.status == Page.State.READY && imageUrl != null && !chapterCache.isImageInCache(imageUrl)) { - page.status = Page.State.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.State.ERROR) { - page.status = Page.State.QUEUE + if (page.status == Page.State.Error) { + page.status = Page.State.Queue } val queuedPages = mutableListOf() - if (page.status == Page.State.QUEUE) { + if (page.status == Page.State.Queue) { queuedPages += PriorityPage(page, 1).also { queue.offer(it) } } queuedPages += preloadNextPages(page, preloadSize) @@ -132,7 +132,7 @@ internal class HttpPageLoader( suspendCancellableCoroutine { continuation -> continuation.invokeOnCancellation { queuedPages.forEach { - if (it.page.status == Page.State.QUEUE) { + if (it.page.status == Page.State.Queue) { queue.remove(it) } } @@ -144,8 +144,8 @@ internal 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.State.ERROR) { - page.status = Page.State.QUEUE + if (page.status == Page.State.Error) { + page.status = Page.State.Queue } // EXH --> // Grab a new image URL on EXH sources @@ -196,7 +196,7 @@ internal class HttpPageLoader( return pages .subList(pageIndex + 1, min(pageIndex + 1 + amount, pages.size)) .mapNotNull { - if (it.status == Page.State.QUEUE) { + if (it.status == Page.State.Queue) { PriorityPage(it, 0).apply { queue.offer(this) } } else { null @@ -213,21 +213,21 @@ internal class HttpPageLoader( private suspend fun internalLoadPage(page: ReaderPage) { try { if (page.imageUrl.isNullOrEmpty()) { - page.status = Page.State.LOAD_PAGE + page.status = Page.State.LoadPage page.imageUrl = source.getImageUrl(page) } val imageUrl = page.imageUrl!! if (!chapterCache.isImageInCache(imageUrl)) { - page.status = Page.State.DOWNLOAD_IMAGE + page.status = Page.State.DownloadImage val imageResponse = source.getImage(page, dataSaver) chapterCache.putImageToCache(imageUrl, imageResponse) } page.stream = { chapterCache.getImageFile(imageUrl).inputStream() } - page.status = Page.State.READY + page.status = Page.State.Ready } catch (e: Throwable) { - page.status = Page.State.ERROR + page.status = Page.State.Error if (e is CancellationException) { throw e } @@ -236,7 +236,7 @@ internal class HttpPageLoader( // EXH --> fun boostPage(page: ReaderPage) { - if (page.status == Page.State.QUEUE) { + if (page.status == Page.State.Queue) { scope.launchIO { loadPage(page) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/InsertPage.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/InsertPage.kt index c605d6e65..40bb702f1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/InsertPage.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/InsertPage.kt @@ -5,7 +5,7 @@ class InsertPage(val parent: ReaderPage) : ReaderPage(parent.index, parent.url, override var chapter: ReaderChapter = parent.chapter init { - status = State.READY + status = State.Ready stream = parent.stream } } 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 7cc2257d2..367dc98f3 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 @@ -112,16 +112,16 @@ class PagerPageHolder( } page.statusFlow.collectLatest { state -> when (state) { - Page.State.QUEUE -> setQueued() - Page.State.LOAD_PAGE -> setLoading() - Page.State.DOWNLOAD_IMAGE -> { + Page.State.Queue -> setQueued() + Page.State.LoadPage -> setLoading() + Page.State.DownloadImage -> { setDownloading() page.progressFlow.collectLatest { value -> progressIndicator?.setProgress(value) } } - Page.State.READY -> setImage() - Page.State.ERROR -> setError() + Page.State.Ready -> setImage() + Page.State.Error -> setError() } } } 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 efb68efe0..bb81c664a 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 @@ -136,16 +136,16 @@ class WebtoonPageHolder( } page.statusFlow.collectLatest { state -> when (state) { - Page.State.QUEUE -> setQueued() - Page.State.LOAD_PAGE -> setLoading() - Page.State.DOWNLOAD_IMAGE -> { + Page.State.Queue -> setQueued() + Page.State.LoadPage -> setLoading() + Page.State.DownloadImage -> { setDownloading() page.progressFlow.collectLatest { value -> progressIndicator.setProgress(value) } } - Page.State.READY -> setImage() - Page.State.ERROR -> setError() + Page.State.Ready -> setImage() + Page.State.Error -> setError() } } } diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt index 9f16eda14..6ee756606 100755 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt @@ -20,7 +20,7 @@ open class Page( get() = index + 1 @Transient - private val _statusFlow = MutableStateFlow(State.QUEUE) + private val _statusFlow = MutableStateFlow(State.Queue) @Transient val statusFlow = _statusFlow.asStateFlow() @@ -49,11 +49,11 @@ open class Page( } } - enum class State { - QUEUE, - LOAD_PAGE, - DOWNLOAD_IMAGE, - READY, - ERROR, + sealed interface State { + data object Queue : State + data object LoadPage : State + data object DownloadImage : State + data object Ready : State + data object Error : State } }