From 0dbaf919e27c734349170353b542478d19599c76 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 25 Mar 2023 09:53:30 +0200 Subject: [PATCH 1/3] Remove pages duplicates #309 --- .../core/parser/RemoteMangaRepository.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/RemoteMangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/RemoteMangaRepository.kt index 389898767..5ef223c52 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/RemoteMangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/RemoteMangaRepository.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.core.parser +import android.util.Log import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -9,6 +10,7 @@ import kotlinx.coroutines.currentCoroutineContext import okhttp3.Headers import okhttp3.Interceptor import okhttp3.Response +import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.core.cache.ContentCache import org.koitharu.kotatsu.core.cache.SafeDeferred import org.koitharu.kotatsu.core.prefs.SourceSettings @@ -77,7 +79,7 @@ class RemoteMangaRepository( override suspend fun getPages(chapter: MangaChapter): List { cache.getPages(source, chapter.url)?.let { return it } val pages = asyncSafe { - parser.getPages(chapter) + parser.getPages(chapter).distinctById() } cache.putPages(source, chapter.url, pages) return pages.await() @@ -108,4 +110,20 @@ class RemoteMangaRepository( }, ) } + + private fun List.distinctById(): List { + if (isEmpty()) { + return emptyList() + } + val result = ArrayList(size) + val set = HashSet(size) + for (page in this) { + if (set.add(page.id)) { + result.add(page) + } else if (BuildConfig.DEBUG) { + Log.w(null, "Duplicate page: $page") + } + } + return result + } } From 6b1e89eda8d405afeade4df04cd7012a4172d1d8 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 25 Mar 2023 16:04:57 +0200 Subject: [PATCH 2/3] Update parsers --- app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3282db0ec..39216dfe7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdkVersion 21 targetSdkVersion 33 - versionCode 522 - versionName '4.4.6' + versionCode 523 + versionName '4.4.7' generatedDensities = [] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -79,7 +79,7 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:cc418570d5') { + implementation('com.github.KotatsuApp:kotatsu-parsers:a3ffecc00f') { exclude group: 'org.json', module: 'json' } From 865f335b25d91271195c7c6f9f09e4ce653d14ec Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 25 Mar 2023 16:26:24 +0200 Subject: [PATCH 3/3] Fix lint errors --- app/build.gradle | 2 +- app/src/main/res/values-w600dp/dimens.xml | 3 +-- app/src/main/res/values-zh-rCN/strings.xml | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 39216dfe7..d8fa8f2fa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -59,7 +59,7 @@ android { ] } lint { - abortOnError false + abortOnError true disable 'MissingTranslation', 'PrivateResource', 'NotifyDataSetChanged' } testOptions { diff --git a/app/src/main/res/values-w600dp/dimens.xml b/app/src/main/res/values-w600dp/dimens.xml index 7bbb84b8b..a23f53572 100644 --- a/app/src/main/res/values-w600dp/dimens.xml +++ b/app/src/main/res/values-w600dp/dimens.xml @@ -4,5 +4,4 @@ 2dp 140dp 420dp - 48dp - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 31305ee5b..93191e9c3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -405,8 +405,6 @@ 显示可疑内容 动态 颜色方案 - 薄荷绿 - October 用网格视图显示 Miku Asuka