From 6c62ddf9272d82784cf1514326be7d7d25412aee Mon Sep 17 00:00:00 2001 From: Aria Moradi Date: Fri, 17 Sep 2021 16:31:47 +0430 Subject: [PATCH] depricate zero based chapters --- .../suwayomi/tachidesk/manga/impl/Chapter.kt | 11 +++++--- .../suwayomi/tachidesk/manga/impl/Page.kt | 26 ++++++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt index e52ad1ab..7151f0ef 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt @@ -222,11 +222,14 @@ object Chapter { } } - private fun firstPageExists(mangaId: Int, chapterId: Int): Boolean = - CachedImageResponse.findFileNameStartingWith( - Page.getChapterDir(mangaId, chapterId), - getPageName(0) + private fun firstPageExists(mangaId: Int, chapterId: Int): Boolean { + val chapterDir = Page.getChapterDir(mangaId, chapterId) + + return CachedImageResponse.findFileNameStartingWith( + chapterDir, + getPageName(0, chapterDir) ) != null + } fun modifyChapter( mangaId: Int, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Page.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Page.kt index 3bbdd291..aa3d7f80 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Page.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Page.kt @@ -18,6 +18,7 @@ import org.kodein.di.conf.global import org.kodein.di.instance import suwayomi.tachidesk.manga.impl.util.GetHttpSource.getHttpSource import suwayomi.tachidesk.manga.impl.util.lang.awaitSingle +import suwayomi.tachidesk.manga.impl.util.storage.CachedImageResponse import suwayomi.tachidesk.manga.impl.util.storage.CachedImageResponse.getCachedImageResponse import suwayomi.tachidesk.manga.impl.util.storage.SafePath import suwayomi.tachidesk.manga.model.table.ChapterTable @@ -49,7 +50,8 @@ object Page { } val chapterId = chapterEntry[ChapterTable.id].value - val pageEntry = transaction { PageTable.select { (PageTable.chapter eq chapterId) and (PageTable.index eq index) }.first() } + val pageEntry = + transaction { PageTable.select { (PageTable.chapter eq chapterId) and (PageTable.index eq index) }.first() } val tachiyomiPage = Page( pageEntry[PageTable.index], @@ -66,16 +68,28 @@ object Page { } } - val saveDir = getChapterDir(mangaId, chapterId) - File(saveDir).mkdirs() - val fileName = getPageName(index) // e.g. 001 + val chapterDir = getChapterDir(mangaId, chapterId) + File(chapterDir).mkdirs() + val fileName = getPageName(index, chapterDir) // e.g. 001 - return getCachedImageResponse(saveDir, fileName) { + return getCachedImageResponse(chapterDir, fileName) { source.fetchImage(tachiyomiPage).awaitSingle() } } - fun getPageName(index: Int): String = String.format("%03d", index) + // TODO(v0.6.0) : zero based pages are deprecated + fun getPageName(index: Int, chapterDir: String): String { + val zeroBasedPageExists = CachedImageResponse.findFileNameStartingWith( + chapterDir, + formatPageName(0) + ) != null + + if (zeroBasedPageExists) return formatPageName(index) + + return formatPageName(index + 1) + } + + private fun formatPageName(index: Int) = String.format("%03d", index) private val applicationDirs by DI.global.instance()