diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
index ec75bc72a..67bc0254c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
@@ -723,8 +723,6 @@ class BackupManager(
// Let the db assign the id
val mergedManga = handler.awaitOneOrNull { mangasQueries.getMangaByUrlAndSource(backupMergedMangaReference.mangaUrl, backupMergedMangaReference.mangaSourceId, mangaMapper) } ?: return@forEach
backupMergedMangaReference.getMergedMangaReference().run {
- mergeId = mergeMangaId
- mangaId = mergedManga.id
handler.await {
mergedQueries.insert(
infoManga = isInfoManga,
@@ -732,9 +730,9 @@ class BackupManager(
chapterSortMode = chapterSortMode.toLong(),
chapterPriority = chapterPriority.toLong(),
downloadChapters = downloadChapters,
- mergeId = mergeId!!,
+ mergeId = mergeMangaId,
mergeUrl = mergeUrl,
- mangaId = mangaId,
+ mangaId = mergedManga.id,
mangaUrl = mangaUrl,
mangaSource = mangaSourceId,
)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
index e1eac6aec..7f25129df 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
@@ -30,7 +30,7 @@ data class BackupMergedMangaReference(
mangaSourceId = mangaSourceId,
mergeId = null,
mangaId = null,
- id = null,
+ id = -1,
)
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
index 6ff335fce..fd91c6018 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
@@ -501,7 +501,7 @@ class MangaInfoScreenModel(
val mangaReferences = mutableListOf(
MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = false,
getChapterUpdates = true,
chapterSortMode = 0,
@@ -517,7 +517,7 @@ class MangaInfoScreenModel(
if (children.isEmpty() || children.all { it.mangaSourceId != MERGED_SOURCE_ID }) {
mangaReferences += MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = false,
getChapterUpdates = false,
chapterSortMode = 0,
@@ -574,7 +574,7 @@ class MangaInfoScreenModel(
}
val originalMangaReference = MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = true,
getChapterUpdates = true,
chapterSortMode = 0,
@@ -588,7 +588,7 @@ class MangaInfoScreenModel(
)
val newMangaReference = MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = false,
getChapterUpdates = true,
chapterSortMode = 0,
@@ -602,7 +602,7 @@ class MangaInfoScreenModel(
)
val mergedMangaReference = MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = false,
getChapterUpdates = false,
chapterSortMode = 0,
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsDialog.kt
index 38f203dc7..c58c124a4 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsDialog.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsDialog.kt
@@ -71,10 +71,12 @@ class EditMergedSettingsState(
override fun onItemReleased(position: Int) {
val mergedMangaAdapter = mergedMangaAdapter ?: return
- mergedMangas.onEach { mergedManga ->
- mergedManga.second.chapterPriority = mergedMangaAdapter.currentItems.indexOfFirst {
- mergedManga.second.id == it.mergedMangaReference.id
- }
+ mergedMangas = mergedMangas.map { (manga, reference) ->
+ manga to reference.copy(
+ chapterPriority = mergedMangaAdapter.currentItems.indexOfFirst {
+ reference.id == it.mergedMangaReference.id
+ },
+ )
}
}
@@ -106,15 +108,19 @@ class EditMergedSettingsState(
private fun toggleChapterUpdates(position: Int) {
val adapterReference = mergedMangaAdapter?.currentItems?.getOrNull(position)?.mergedMangaReference
- mergedMangas.firstOrNull { it.second.id != null && it.second.id == adapterReference?.id }?.apply {
- second.getChapterUpdates = !second.getChapterUpdates
+ ?: return
+ mergedMangas = mergedMangas.map { pair ->
+ val (manga, reference) = pair
+ if (reference.id != adapterReference.id) return@map pair
- mergedMangaAdapter?.allBoundViewHolders?.firstOrNull { it is EditMergedMangaHolder && it.reference.id == second.id }?.let {
+ mergedMangaAdapter?.allBoundViewHolders?.firstOrNull { it is EditMergedMangaHolder && it.reference.id == reference.id }?.let {
if (it is EditMergedMangaHolder) {
- it.updateChapterUpdatesIcon(second.getChapterUpdates)
+ it.updateChapterUpdatesIcon(!reference.getChapterUpdates)
}
} ?: context.toast(R.string.merged_chapter_updates_error)
- } ?: context.toast(R.string.merged_toggle_chapter_updates_find_error)
+
+ manga to reference.copy(getChapterUpdates = !reference.getChapterUpdates)
+ }
}
override fun onToggleChapterDownloadsClicked(position: Int) {
@@ -130,15 +136,19 @@ class EditMergedSettingsState(
private fun toggleChapterDownloads(position: Int) {
val adapterReference = mergedMangaAdapter?.currentItems?.getOrNull(position)?.mergedMangaReference
- mergedMangas.firstOrNull { it.second.id != null && it.second.id == adapterReference?.id }?.apply {
- second.downloadChapters = !second.downloadChapters
+ ?: return
+ mergedMangas = mergedMangas.map { pair ->
+ val (manga, reference) = pair
+ if (reference.id != adapterReference.id) return@map pair
- mergedMangaAdapter?.allBoundViewHolders?.firstOrNull { it is EditMergedMangaHolder && it.reference.id == second.id }?.let {
+ mergedMangaAdapter?.allBoundViewHolders?.firstOrNull { it is EditMergedMangaHolder && it.reference.id == reference.id }?.let {
if (it is EditMergedMangaHolder) {
- it.updateDownloadChaptersIcon(second.downloadChapters)
+ it.updateDownloadChaptersIcon(!reference.downloadChapters)
}
} ?: context.toast(R.string.merged_toggle_download_chapters_error)
- } ?: context.toast(R.string.merged_toggle_download_chapters_find_error)
+
+ manga to reference.copy(downloadChapters = !reference.downloadChapters)
+ }
}
fun onPositiveButtonClick() {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt
index 7f1d8a22e..a75d57ab2 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt
@@ -68,19 +68,23 @@ class EditMergedSettingsHeaderAdapter(private val state: EditMergedSettingsState
position: Int,
id: Long,
) {
- state.mergeReference?.chapterSortMode = when (position) {
- 0 -> MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
- 1 -> MergedMangaReference.CHAPTER_SORT_PRIORITY
- 2 -> MergedMangaReference.CHAPTER_SORT_MOST_CHAPTERS
- 3 -> MergedMangaReference.CHAPTER_SORT_HIGHEST_CHAPTER_NUMBER
- else -> MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
- }
+ state.mergeReference = state.mergeReference?.copy(
+ chapterSortMode = when (position) {
+ 0 -> MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
+ 1 -> MergedMangaReference.CHAPTER_SORT_PRIORITY
+ 2 -> MergedMangaReference.CHAPTER_SORT_MOST_CHAPTERS
+ 3 -> MergedMangaReference.CHAPTER_SORT_HIGHEST_CHAPTER_NUMBER
+ else -> MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
+ },
+ )
xLogD(state.mergeReference?.chapterSortMode)
editMergedMangaItemSortingListener.onSetPrioritySort(canMove())
}
override fun onNothingSelected(parent: AdapterView<*>?) {
- state.mergeReference?.chapterSortMode = MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
+ state.mergeReference = state.mergeReference?.copy(
+ chapterSortMode = MergedMangaReference.CHAPTER_SORT_NO_DEDUPE,
+ )
}
}
@@ -111,25 +115,20 @@ class EditMergedSettingsHeaderAdapter(private val state: EditMergedSettingsState
position: Int,
id: Long,
) {
- val mergedInfoManga = state.mergedMangas
- .find { mergedManga ->
- mergedManga.second.id == mergedMangas.getOrNull(position)?.second?.id
- }
-
- if (mergedInfoManga != null) {
- state.mergedMangas.onEach {
- it.second.isInfoManga = false
- }
- mergedInfoManga.second.isInfoManga = true
+ state.mergedMangas = state.mergedMangas.map { (manga, reference) ->
+ manga to reference.copy(
+ isInfoManga = reference.id == mergedMangas.getOrNull(position)?.second?.id,
+ )
}
}
override fun onNothingSelected(parent: AdapterView<*>?) {
mergedMangas.find { it.second.isInfoManga }?.second?.let { newInfoManga ->
- state.mergedMangas.onEach {
- it.second.isInfoManga = false
+ state.mergedMangas = state.mergedMangas.map { (manga, reference) ->
+ manga to reference.copy(
+ isInfoManga = reference.id == newInfoManga.id,
+ )
}
- newInfoManga.isInfoManga = true
}
}
}
@@ -141,10 +140,12 @@ class EditMergedSettingsHeaderAdapter(private val state: EditMergedSettingsState
true -> 1F
false -> 0.5F
}
- state.mergeReference?.chapterSortMode = when (isChecked) {
- true -> MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
- false -> MergedMangaReference.CHAPTER_SORT_NONE
- }
+ state.mergeReference = state.mergeReference?.copy(
+ chapterSortMode = when (isChecked) {
+ true -> MergedMangaReference.CHAPTER_SORT_NO_DEDUPE
+ false -> MergedMangaReference.CHAPTER_SORT_NONE
+ },
+ )
if (isChecked) binding.dedupeModeSpinner.setSelection(0)
}
diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt
index eaa81ee14..7d9f63054 100644
--- a/app/src/main/java/exh/EXHMigrations.kt
+++ b/app/src/main/java/exh/EXHMigrations.kt
@@ -153,7 +153,7 @@ object EXHMigrations {
mergedManga.first.copy(url = it)
} ?: mergedManga.first
mergedMangaReferences += MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = false,
getChapterUpdates = false,
chapterSortMode = 0,
@@ -168,7 +168,7 @@ object EXHMigrations {
mergedManga.second.children.distinct().forEachIndexed { index, mangaSource ->
val load = mangaSource.load() ?: return@forEachIndexed
mergedMangaReferences += MergedMangaReference(
- id = null,
+ id = -1,
isInfoManga = index == 0,
getChapterUpdates = true,
chapterSortMode = 0,
diff --git a/app/src/main/java/exh/merged/sql/models/MergedMangaReference.kt b/app/src/main/java/exh/merged/sql/models/MergedMangaReference.kt
index 6526b6b9d..d1c4ca874 100644
--- a/app/src/main/java/exh/merged/sql/models/MergedMangaReference.kt
+++ b/app/src/main/java/exh/merged/sql/models/MergedMangaReference.kt
@@ -2,31 +2,31 @@ package exh.merged.sql.models
data class MergedMangaReference(
// Tag identifier, unique
- var id: Long?,
+ val id: Long,
// The manga where it grabs the updated manga info
- var isInfoManga: Boolean,
+ val isInfoManga: Boolean,
// If false the manga will not grab chapter updates
- var getChapterUpdates: Boolean,
+ val getChapterUpdates: Boolean,
// The mode in which the chapters are handeled, only set in the main merge reference
- var chapterSortMode: Int,
+ val chapterSortMode: Int,
// chapter priority the deduplication uses
- var chapterPriority: Int,
+ val chapterPriority: Int,
// Set if you want it to download new chapters
- var downloadChapters: Boolean,
+ val downloadChapters: Boolean,
// merged manga this reference is attached to
- var mergeId: Long?,
+ val mergeId: Long?,
// merged manga url this reference is attached to
val mergeUrl: String,
// manga id included in the merge this reference is attached to
- var mangaId: Long?,
+ val mangaId: Long?,
// manga url included in the merge this reference is attached to
val mangaUrl: String,
diff --git a/i18n/src/main/res/values-fr/strings_sy.xml b/i18n/src/main/res/values-fr/strings_sy.xml
index eaa446401..bba0a9203 100644
--- a/i18n/src/main/res/values-fr/strings_sy.xml
+++ b/i18n/src/main/res/values-fr/strings_sy.xml
@@ -474,9 +474,7 @@
Activer ou désactiver cette option désactivera ou activera les téléchargements des chapitres pour ce manga
Références de fusion non valides
Erreur de basculement des mises à jour de chapitre
- Impossible de trouver le manga pour basculer les mises à jour de chapitre
Erreur de basculement des chapitres de téléchargement
- Impossible de trouver le manga pour basculer le téléchargements des chapitres
Autoriser la déduplication:
Mode de déduplication:
Info manga:
diff --git a/i18n/src/main/res/values-in/strings_sy.xml b/i18n/src/main/res/values-in/strings_sy.xml
index d0d019d01..b925b53ef 100644
--- a/i18n/src/main/res/values-in/strings_sy.xml
+++ b/i18n/src/main/res/values-in/strings_sy.xml
@@ -586,9 +586,7 @@
Mengalihkan ini akan menonaktifkan atau mengaktifkan unduhan bab untuk manga gabungan ini
Referensi penggabungan tidak valid
Tombol kesalahan pembaruan bab
- Tidak dapat menemukan manga untuk pembaruan bab
Tombol kesalahan unduhan bab
- Tidak dapat menemukan manga untuk unduhan bab
Izinkan deduplikasi:
Mode deduplikasi:
Info manga:
diff --git a/i18n/src/main/res/values-pt-rBR/strings_sy.xml b/i18n/src/main/res/values-pt-rBR/strings_sy.xml
index 48ebd6163..92d813ab1 100644
--- a/i18n/src/main/res/values-pt-rBR/strings_sy.xml
+++ b/i18n/src/main/res/values-pt-rBR/strings_sy.xml
@@ -556,9 +556,7 @@
Mudar isto (des)ativará downloads de capítulo a este mangá juntado
Referências juntadas inválidas
Alternar erro de atualizações de capítulo
- Mangá não pôde ser encontrado para alternar atualizações de capítulo
Erro ao alternar downloads de capítulo
- Mangá não pôde ser encontrado para alternar downloads de capítulo
Permitir desduplicação:
Modo da desduplicação:
Informações do mangá:
diff --git a/i18n/src/main/res/values-ru/strings_sy.xml b/i18n/src/main/res/values-ru/strings_sy.xml
index 6fba4e809..03b449b68 100644
--- a/i18n/src/main/res/values-ru/strings_sy.xml
+++ b/i18n/src/main/res/values-ru/strings_sy.xml
@@ -638,9 +638,7 @@
Переключение этого параметра отключит/включит загрузку глав для этой объеденённой серии
Недействительные объеденённые ссылки
Ошибка переключения обновлений глав
- Не удалось найти серию для переключения обновлений глав
Ошибка переключения загрузки глав
- Не удалось найти серию для переключения загрузки глав
Разрешить дедупликацию:
Режим дедупликации:
Сведенья серии:
diff --git a/i18n/src/main/res/values-zh-rCN/strings_sy.xml b/i18n/src/main/res/values-zh-rCN/strings_sy.xml
index 175c7a3ae..15fd68524 100644
--- a/i18n/src/main/res/values-zh-rCN/strings_sy.xml
+++ b/i18n/src/main/res/values-zh-rCN/strings_sy.xml
@@ -593,9 +593,7 @@
更改此项将禁用或启用此合并漫画的章节下载
合并后的引用无效
切换章节更新错误
- 找不到漫画,无法切换章节更新
切换下载章节错误
- 找不到漫画来切换章节下载
允许删除重复数据:
去重模式:
漫画信息:
diff --git a/i18n/src/main/res/values/strings_sy.xml b/i18n/src/main/res/values/strings_sy.xml
index c27ee04ad..adbc336e4 100644
--- a/i18n/src/main/res/values/strings_sy.xml
+++ b/i18n/src/main/res/values/strings_sy.xml
@@ -630,9 +630,7 @@
Toggling this will disable or enable chapter downloads for this merged entry
Merged references invalid
Toggle chapter updates error
- Could not find entry to toggle chapter updates
Toggle download chapters error
- Could not find entry to toggle chapter downloads
Allow deduplication:
Dedupe mode:
Info entry: