From f668e31cf6b5a600341eb5e937eb1648afaa4bf0 Mon Sep 17 00:00:00 2001 From: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com> Date: Thu, 30 Oct 2025 08:59:30 +0700 Subject: [PATCH] fix(migration): Add Merged Manga Dedupe Mode Migration and update versioning (#1258) --- app/build.gradle.kts | 4 +-- .../MergedMangaDedupeModeMigration.kt | 35 +++++++++++++++++++ .../core/migration/migrations/Migrations.kt | 1 + 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/mihon/core/migration/migrations/MergedMangaDedupeModeMigration.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cf32210a0..9400f9901 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -25,8 +25,8 @@ android { defaultConfig { applicationId = "app.komikku" - versionCode = 76 - versionName = "1.13.4" + versionCode = 77 + versionName = "1.13.5" buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"") diff --git a/app/src/main/java/mihon/core/migration/migrations/MergedMangaDedupeModeMigration.kt b/app/src/main/java/mihon/core/migration/migrations/MergedMangaDedupeModeMigration.kt new file mode 100644 index 000000000..71e817db2 --- /dev/null +++ b/app/src/main/java/mihon/core/migration/migrations/MergedMangaDedupeModeMigration.kt @@ -0,0 +1,35 @@ +package mihon.core.migration.migrations + +import mihon.core.migration.Migration +import mihon.core.migration.MigrationContext +import tachiyomi.core.common.util.lang.withIOContext +import tachiyomi.data.DatabaseHandler +import tachiyomi.data.manga.MergedMangaMapper +import tachiyomi.domain.manga.interactor.UpdateMergedSettings +import tachiyomi.domain.manga.model.MergeMangaSettingsUpdate + +class MergedMangaDedupeModeMigration : Migration { + override val version: Float = 77f + + override suspend fun invoke(migrationContext: MigrationContext): Boolean = withIOContext { + val handler = migrationContext.get() ?: return@withIOContext false + val updateMergedSettings = migrationContext.get() ?: return@withIOContext false + + // Get merged manga references from db + val dbMergedMangaReferences = handler.awaitList { + mergedQueries.selectAll(MergedMangaMapper::map) + } + + dbMergedMangaReferences.map { + MergeMangaSettingsUpdate( + id = it.id, + chapterSortMode = (it.chapterSortMode - 1).coerceAtLeast(0), + isInfoManga = null, + getChapterUpdates = null, + chapterPriority = null, + downloadChapters = null, + ) + }.let { updateMergedSettings.awaitAll(it) } + return@withIOContext true + } +} diff --git a/app/src/main/java/mihon/core/migration/migrations/Migrations.kt b/app/src/main/java/mihon/core/migration/migrations/Migrations.kt index 9dac12086..3726896cc 100644 --- a/app/src/main/java/mihon/core/migration/migrations/Migrations.kt +++ b/app/src/main/java/mihon/core/migration/migrations/Migrations.kt @@ -48,6 +48,7 @@ val migrations: List IntegratedHentaiMigration(), SetupAppUpdateMigration(), EHentaiMigration(), + MergedMangaDedupeModeMigration(), // KMK <-- TrustExtensionRepositoryMigration(), CategoryPreferencesCleanupMigration(),