From b26749d61c779b186d5d5c6df7dffb9dff21ea19 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sun, 16 Apr 2023 14:12:48 -0400 Subject: [PATCH] Improve history migration --- .../advanced/process/MigrationListScreenModel.kt | 4 +--- .../data/history/HistoryRepositoryImpl.kt | 16 ++++++++++++++++ .../domain/history/interactor/UpsertHistory.kt | 6 ++++++ .../history/repository/HistoryRepository.kt | 2 ++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt index 79fd4d929..cdebb1910 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListScreenModel.kt @@ -344,9 +344,7 @@ class MigrationListScreenModel( } updateChapter.awaitAll(chapterUpdates) - historyUpdates.forEach { - upsertHistory.await(it) - } + upsertHistory.awaitAll(historyUpdates) } // Update categories if (MigrationFlags.hasCategories(flags)) { diff --git a/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt index e71dc0ce2..0a95d7eb7 100644 --- a/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/history/HistoryRepositoryImpl.kt @@ -70,6 +70,22 @@ class HistoryRepositoryImpl( } // SY --> + override suspend fun upsertHistory(historyUpdates: List) { + try { + handler.await(true) { + historyUpdates.forEach { historyUpdate -> + historyQueries.upsert( + historyUpdate.chapterId, + historyUpdate.readAt, + historyUpdate.sessionReadDuration, + ) + } + } + } catch (e: Exception) { + logcat(LogPriority.ERROR, throwable = e) + } + } + override suspend fun getByMangaId(mangaId: Long): List { return handler.awaitList { historyQueries.getHistoryByMangaId(mangaId, historyMapper) } } diff --git a/domain/src/main/java/tachiyomi/domain/history/interactor/UpsertHistory.kt b/domain/src/main/java/tachiyomi/domain/history/interactor/UpsertHistory.kt index 86b041b77..d9df19e13 100644 --- a/domain/src/main/java/tachiyomi/domain/history/interactor/UpsertHistory.kt +++ b/domain/src/main/java/tachiyomi/domain/history/interactor/UpsertHistory.kt @@ -10,4 +10,10 @@ class UpsertHistory( suspend fun await(historyUpdate: HistoryUpdate) { historyRepository.upsertHistory(historyUpdate) } + + // SY --> + suspend fun awaitAll(historyUpdates: List) { + historyRepository.upsertHistory(historyUpdates) + } + // SY <-- } diff --git a/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt b/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt index b04d3e8a6..4dad7b802 100644 --- a/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt +++ b/domain/src/main/java/tachiyomi/domain/history/repository/HistoryRepository.kt @@ -22,6 +22,8 @@ interface HistoryRepository { suspend fun upsertHistory(historyUpdate: HistoryUpdate) // SY --> + suspend fun upsertHistory(historyUpdates: List) + suspend fun getByMangaId(mangaId: Long): List // SY <-- }