From a3465c31c91fcce9e86a5c7ca34bda935bac21a9 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) (cherry picked from commit a594ad392d4793f3a5cb2b709d29b2feab6120d3) # Conflicts: # CHANGELOG.md --- .../tachiyomi/data/manga/MangaRepositoryImpl.kt | 5 +++++ data/src/main/sqldelight/tachiyomi/data/mangas.sq | 13 +++++++++++-- .../domain/manga/interactor/NetworkToLocalManga.kt | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt index 490bd1631..bc7eb9e91 100644 --- a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt @@ -151,6 +151,11 @@ class MangaRepositoryImpl( dateAdded = it.dateAdded, updateStrategy = it.updateStrategy, version = it.version, + // SY --> + updateTitle = it.ogTitle.isNotBlank(), + updateCover = !it.ogThumbnailUrl.isNullOrBlank(), + // SY <-- + 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 cf0de16ce..3ff054d91 100644 --- a/data/src/main/sqldelight/tachiyomi/data/mangas.sq +++ b/data/src/main/sqldelight/tachiyomi/data/mangas.sq @@ -208,9 +208,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 {