Fix local chapters deletion

(cherry picked from commit 25eb05d305)
This commit is contained in:
Koitharu
2025-01-09 08:41:27 +02:00
parent 7991f9ca97
commit 8bc29ac331
2 changed files with 2 additions and 11 deletions

View File

@@ -152,7 +152,8 @@ class LocalMangaRepository @Inject constructor(
"Manga is not stored on local storage" "Manga is not stored on local storage"
}.manga }.manga
LocalMangaUtil(subject).deleteChapters(ids) LocalMangaUtil(subject).deleteChapters(ids)
localStorageChanges.emit(LocalManga(subject)) val updated = getDetails(subject)
localStorageChanges.emit(LocalManga(updated))
} }
suspend fun getRemoteManga(localManga: Manga): Manga? { suspend fun getRemoteManga(localManga: Manga): Manga? {

View File

@@ -1,7 +1,6 @@
package org.koitharu.kotatsu.local.domain package org.koitharu.kotatsu.local.domain
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.buffer import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.channelFlow
import kotlinx.coroutines.flow.fold import kotlinx.coroutines.flow.fold
@@ -13,7 +12,6 @@ import org.koitharu.kotatsu.core.parser.MangaRepository
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
import org.koitharu.kotatsu.history.data.HistoryRepository import org.koitharu.kotatsu.history.data.HistoryRepository
import org.koitharu.kotatsu.local.data.LocalMangaRepository import org.koitharu.kotatsu.local.data.LocalMangaRepository
import org.koitharu.kotatsu.local.data.LocalStorageChanges
import org.koitharu.kotatsu.local.domain.model.LocalManga import org.koitharu.kotatsu.local.domain.model.LocalManga
import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaChapter
@@ -26,7 +24,6 @@ class DeleteReadChaptersUseCase @Inject constructor(
private val localMangaRepository: LocalMangaRepository, private val localMangaRepository: LocalMangaRepository,
private val historyRepository: HistoryRepository, private val historyRepository: HistoryRepository,
private val mangaRepositoryFactory: MangaRepository.Factory, private val mangaRepositoryFactory: MangaRepository.Factory,
@LocalStorageChanges private val localStorageChanges: MutableSharedFlow<LocalManga?>,
) { ) {
suspend operator fun invoke(manga: Manga): Int { suspend operator fun invoke(manga: Manga): Int {
@@ -37,7 +34,6 @@ class DeleteReadChaptersUseCase @Inject constructor(
} }
val task = getDeletionTask(localManga) ?: return 0 val task = getDeletionTask(localManga) ?: return 0
localMangaRepository.deleteChapters(task.manga.manga, task.chaptersIds) localMangaRepository.deleteChapters(task.manga.manga, task.chaptersIds)
emitUpdate(localManga)
return task.chaptersIds.size return task.chaptersIds.size
} }
@@ -62,7 +58,6 @@ class DeleteReadChaptersUseCase @Inject constructor(
}.buffer().map { }.buffer().map {
runCatchingCancellable { runCatchingCancellable {
localMangaRepository.deleteChapters(it.manga.manga, it.chaptersIds) localMangaRepository.deleteChapters(it.manga.manga, it.chaptersIds)
emitUpdate(it.manga)
it.chaptersIds.size it.chaptersIds.size
}.onFailure { }.onFailure {
it.printStackTraceDebug() it.printStackTraceDebug()
@@ -88,11 +83,6 @@ class DeleteReadChaptersUseCase @Inject constructor(
} }
} }
private suspend fun emitUpdate(subject: LocalManga) {
val updated = localMangaRepository.getDetails(subject.manga)
localStorageChanges.emit(subject.copy(manga = updated))
}
private suspend fun getAllChapters(manga: LocalManga): List<MangaChapter> = runCatchingCancellable { private suspend fun getAllChapters(manga: LocalManga): List<MangaChapter> = runCatchingCancellable {
val remoteManga = checkNotNull(localMangaRepository.getRemoteManga(manga.manga)) val remoteManga = checkNotNull(localMangaRepository.getRemoteManga(manga.manga))
checkNotNull(mangaRepositoryFactory.create(remoteManga.source).getDetails(remoteManga).chapters) checkNotNull(mangaRepositoryFactory.create(remoteManga.source).getDetails(remoteManga).chapters)