From a594ad392d4793f3a5cb2b709d29b2feab6120d3 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Mon, 7 Apr 2025 12:10:12 +0600 Subject: [PATCH] Update non-library manga data when browsing (#1967) --- CHANGELOG.md | 1 + .../tachiyomi/data/manga/MangaRepositoryImpl.kt | 3 +++ data/src/main/sqldelight/tachiyomi/data/mangas.sq | 13 +++++++++++-- .../domain/manga/interactor/NetworkToLocalManga.kt | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e78a377ca..f48b3f6ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co ### Improved - Significantly improve browsing speed (near instantaneous) ([@AntsyLich](https://github.com/AntsyLich)) ([#1946](https://github.com/mihonapp/mihon/pull/1946)) - Deduplicate entries when browsing ([@AntsyLich](https://github.com/AntsyLich)) ([#1957](https://github.com/mihonapp/mihon/pull/1957)) +- Update non-library manga data when browsing ([@AntsyLich](https://github.com/AntsyLich)) ([#1967](https://github.com/mihonapp/mihon/pull/1967)) ### Changed - Display all similarly named duplicates in duplicate manga dialogue ([@NarwhalHorns](https://github.com/NarwhalHorns), [@AntsyLich](https://github.com/AntsyLich)) ([#1861](https://github.com/mihonapp/mihon/pull/1861)) diff --git a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt index 0fa825fed..47639329e 100644 --- a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt @@ -141,6 +141,9 @@ class MangaRepositoryImpl( dateAdded = it.dateAdded, updateStrategy = it.updateStrategy, version = it.version, + updateTitle = it.title.isNotBlank(), + updateCover = !it.thumbnailUrl.isNullOrBlank(), + updateDetails = it.initialized, mapper = MangaMapper::mapManga, ) .executeAsOne() diff --git a/data/src/main/sqldelight/tachiyomi/data/mangas.sq b/data/src/main/sqldelight/tachiyomi/data/mangas.sq index 7dc34f0cb..8344abdfb 100644 --- a/data/src/main/sqldelight/tachiyomi/data/mangas.sq +++ b/data/src/main/sqldelight/tachiyomi/data/mangas.sq @@ -196,9 +196,18 @@ insertNetworkManga { :updateStrategy, :calculateInterval, 0, :version WHERE NOT EXISTS(SELECT 0 FROM mangas WHERE source = :source AND url = :url); - -- Update the title if it is not favorite + -- Update the relevant details if applicable and not favorite UPDATE mangas - SET title = :title + SET + title = CASE WHEN :updateTitle THEN :title ELSE title END, + thumbnail_url = CASE WHEN :updateCover THEN :thumbnailUrl ELSE thumbnail_url END, + author = CASE WHEN :updateDetails THEN :author ELSE author END, + artist = CASE WHEN :updateDetails THEN :artist ELSE artist END, + description = CASE WHEN :updateDetails THEN :description ELSE description END, + genre = CASE WHEN :updateDetails THEN :genre ELSE genre END, + status = CASE WHEN :updateDetails THEN :status ELSE status END, + update_strategy = CASE WHEN :updateDetails THEN :updateStrategy ELSE update_strategy END, + initialized = :updateDetails WHERE source = :source AND url = :url AND favorite = 0; diff --git a/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt b/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt index a3e35d6e3..69137d9e9 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt @@ -8,7 +8,7 @@ class NetworkToLocalManga( ) { suspend operator fun invoke(manga: Manga): Manga { - return mangaRepository.insertNetworkManga(listOf(manga)).single() + return invoke(listOf(manga)).single() } suspend operator fun invoke(manga: List): List {