From 1acb7a1a35e9b07178a02479ca0e0f3368adea71 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Tue, 15 Nov 2022 00:25:42 -0500 Subject: [PATCH] Fixes for merged manga settings --- .../eu/kanade/data/manga/MangaMergeRepositoryImpl.kt | 1 + .../chapter/interactor/GetMergedChapterByMangaId.kt | 11 +++++------ .../domain/manga/model/MergeMangaSettingsUpdate.kt | 1 + .../eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt | 11 ++++++----- .../ui/manga/merged/EditMergedSettingsDialog.kt | 3 ++- app/src/main/sqldelight/data/merged.sq | 3 ++- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/kanade/data/manga/MangaMergeRepositoryImpl.kt b/app/src/main/java/eu/kanade/data/manga/MangaMergeRepositoryImpl.kt index da2de6465..74539dfc6 100644 --- a/app/src/main/java/eu/kanade/data/manga/MangaMergeRepositoryImpl.kt +++ b/app/src/main/java/eu/kanade/data/manga/MangaMergeRepositoryImpl.kt @@ -68,6 +68,7 @@ class MangaMergeRepositoryImpl( downloadChapters = value.downloadChapters?.toLong(), infoManga = value.isInfoManga?.toLong(), chapterPriority = value.chapterPriority?.toLong(), + chapterSortMode = value.chapterSortMode?.toLong(), ) } } diff --git a/app/src/main/java/eu/kanade/domain/chapter/interactor/GetMergedChapterByMangaId.kt b/app/src/main/java/eu/kanade/domain/chapter/interactor/GetMergedChapterByMangaId.kt index 809dcd15d..bf0c0ecf1 100644 --- a/app/src/main/java/eu/kanade/domain/chapter/interactor/GetMergedChapterByMangaId.kt +++ b/app/src/main/java/eu/kanade/domain/chapter/interactor/GetMergedChapterByMangaId.kt @@ -8,8 +8,8 @@ import eu.kanade.tachiyomi.util.system.logcat import exh.merged.sql.models.MergedMangaReference import exh.source.MERGED_SOURCE_ID import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flowOf -import kotlinx.coroutines.flow.map import logcat.LogPriority class GetMergedChapterByMangaId( @@ -19,14 +19,14 @@ class GetMergedChapterByMangaId( ) { suspend fun await(mangaId: Long, editScanlators: Boolean = false, dedupe: Boolean = true): List { - return transformMergedChapters(mangaId, getFromDatabase(mangaId), editScanlators, dedupe) + return transformMergedChapters(getMergedReferencesById.await(mangaId), getFromDatabase(mangaId), editScanlators, dedupe) } suspend fun subscribe(mangaId: Long, editScanlators: Boolean = false, dedupe: Boolean = true): Flow> { return try { chapterRepository.getMergedChapterByMangaIdAsFlow(mangaId) - .map { - transformMergedChapters(mangaId, it, editScanlators, dedupe) + .combine(getMergedReferencesById.subscribe(mangaId)) { chapters, references -> + transformMergedChapters(references, chapters, editScanlators, dedupe) } } catch (e: Exception) { logcat(LogPriority.ERROR, e) @@ -44,8 +44,7 @@ class GetMergedChapterByMangaId( } // TODO more chapter dedupe - suspend fun transformMergedChapters(mangaId: Long, chapterList: List, editScanlators: Boolean, dedupe: Boolean): List { - val mangaReferences = getMergedReferencesById.await(mangaId) + fun transformMergedChapters(mangaReferences: List, chapterList: List, editScanlators: Boolean, dedupe: Boolean): List { val chapters = if (editScanlators) { val sources = mangaReferences.map { sourceManager.getOrStub(it.mangaSourceId) to it.mangaId } chapterList.map { chapter -> diff --git a/app/src/main/java/eu/kanade/domain/manga/model/MergeMangaSettingsUpdate.kt b/app/src/main/java/eu/kanade/domain/manga/model/MergeMangaSettingsUpdate.kt index c92eea6dc..26031028f 100644 --- a/app/src/main/java/eu/kanade/domain/manga/model/MergeMangaSettingsUpdate.kt +++ b/app/src/main/java/eu/kanade/domain/manga/model/MergeMangaSettingsUpdate.kt @@ -6,4 +6,5 @@ data class MergeMangaSettingsUpdate( var getChapterUpdates: Boolean?, var chapterPriority: Int?, var downloadChapters: Boolean?, + var chapterSortMode: Int?, ) 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 f7106a4f1..6171d5544 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 @@ -654,11 +654,12 @@ class MangaInfoScreenModel( updateMergedSettings.awaitAll( mergedMangaReferences.map { MergeMangaSettingsUpdate( - it.id!!, - it.isInfoManga, - it.getChapterUpdates, - it.chapterPriority, - it.downloadChapters, + id = it.id!!, + isInfoManga = it.isInfoManga, + getChapterUpdates = it.getChapterUpdates, + chapterPriority = it.chapterPriority, + downloadChapters = it.downloadChapters, + chapterSortMode = it.chapterSortMode, ) }, ) 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 c959770fe..75ccb0d2a 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 @@ -66,7 +66,7 @@ class EditMergedSettingsState( mergedMangaAdapter?.isHandleDragEnabled = isPriorityOrder - mergedMangaAdapter?.updateDataSet(mergedMangas.map { it.toModel() }) + mergedMangaAdapter?.updateDataSet(mergedMangas.map { it.toModel() }.sortedBy { it.mergedMangaReference.chapterPriority }) } override fun onItemReleased(position: Int) { @@ -143,6 +143,7 @@ class EditMergedSettingsState( fun onPositiveButtonClick() { onPositiveClick(listOfNotNull(mergeReference) + mergedMangas.map { it.second }) + onDismissRequest() } } diff --git a/app/src/main/sqldelight/data/merged.sq b/app/src/main/sqldelight/data/merged.sq index b92fed9dd..7dfef47b6 100644 --- a/app/src/main/sqldelight/data/merged.sq +++ b/app/src/main/sqldelight/data/merged.sq @@ -105,7 +105,8 @@ SET get_chapter_updates = coalesce(:getChapterUpdates, get_chapter_updates), download_chapters = coalesce(:downloadChapters, download_chapters), info_manga = coalesce(:infoManga, info_manga), - chapter_priority = coalesce(:chapterPriority, chapter_priority) + chapter_priority = coalesce(:chapterPriority, chapter_priority), + chapter_sort_mode = coalesce(:chapterSortMode, chapter_sort_mode) WHERE _id = :id; deleteById: