From 71e6c3132f8316add269c9203947fca2e9767978 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Wed, 14 Apr 2021 20:37:00 -0400 Subject: [PATCH] Allow manhwas to be read in non webtoon formats but only them. Webtoons will still force webtoon mode It's about time for this anyway, not all sources can be mangadex but the original goal has been reached: force users libraries to webtoon for manhwa Now they can be free...ish Also some changes to the logic for series type --- .../tachiyomi/data/database/models/Manga.kt | 16 ++++++++++++++-- .../kanade/tachiyomi/ui/reader/ReaderActivity.kt | 2 +- .../tachiyomi/ui/reader/ReaderPresenter.kt | 5 ++++- 3 files changed, 19 insertions(+), 4 deletions(-) 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