diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt index 3327b44d75..0652b4fbd4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt @@ -86,6 +86,11 @@ interface Manga : SManga { isComicSource(sourceName) ) { TYPE_COMIC + } else if (sourceName.contains("webtoon", true) && + currentTags.none { tag -> isManhuaTag(tag) } && + currentTags.none { tag -> isManhwaTag(tag) } + ) { + TYPE_WEBTOON } else if (currentTags.any { tag -> isManhuaTag(tag) } || sourceName.contains("manhua", true) ) { TYPE_MANHUA @@ -107,7 +112,7 @@ interface Manga : SManga { val currentTags = genre?.split(",")?.map { it.trim().toLowerCase(Locale.US) } return if (currentTags?.any { tag -> - tag == "long strip" || tag == "manhwa" || tag.contains("webtoon") + isManhwaTag(tag) || tag.contains("webtoon") } == true || isWebtoonSource(sourceName) ) { ReaderActivity.WEBTOON @@ -130,6 +135,13 @@ interface Manga : SManga { return tag in listOf("manhua", "маньхуа", "cn", "hk", "zh-Hans", "zh-Hant") || tag.startsWith("chinese") } + fun isLongStrip(): Boolean { + val currentTags = + genre?.split(",")?.map { it.trim().toLowerCase(Locale.US) } ?: emptyList() + val sourceName by lazy { Injekt.get().getOrStub(source).name } + return currentTags.any { it == "long strip" } || sourceName.contains("webtoon", true) + } + fun isManhwaTag(tag: String): Boolean { return tag in listOf("long strip", "manhwa", "манхва", "kr") || tag.startsWith("korean") } @@ -140,7 +152,7 @@ interface Manga : SManga { fun isWebtoonSource(sourceName: String): Boolean { return sourceName.contains("webtoon", true) || - sourceName.contains("manwha", true) || + sourceName.contains("manhwa", true) || sourceName.contains("toonily", true) } 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 4e68037579..25d0dc0b5a 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 @@ -781,7 +781,7 @@ class ReaderActivity : ), 4000 ) { - if (mangaViewer != WEBTOON) setAction(R.string.use_default) { + if (presenter.manga?.isLongStrip() != true) setAction(R.string.use_default) { presenter.setMangaViewer(0) } } 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 ba67493be4..40c0a8ae0b 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 @@ -560,7 +560,10 @@ class ReaderPresenter( val default = preferences.defaultViewer() val manga = manga ?: return default val readerType = manga.defaultReaderType() - if (manga.viewer == -1 || (readerType == ReaderActivity.WEBTOON && readerType != manga.viewer)) { + if (manga.viewer == -1 || + // Force webtoon mode + (manga.isLongStrip() && readerType != manga.viewer) + ) { val cantSwitchToLTR = (readerType == ReaderActivity.LEFT_TO_RIGHT && default != ReaderActivity.RIGHT_TO_LEFT) manga.viewer = if (cantSwitchToLTR) 0 else readerType