From b9b41ed49185815f2b06a2ff44063f0d1c6f599d Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 6 May 2023 16:05:39 +0300 Subject: [PATCH] Fix local manga list update on deletion --- .../kotatsu/local/domain/LocalMangaRepository.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt b/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt index f28d05262..2ca31d0e5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/domain/LocalMangaRepository.kt @@ -6,12 +6,14 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch import kotlinx.coroutines.runInterruptible import org.koitharu.kotatsu.core.parser.MangaRepository import org.koitharu.kotatsu.local.data.LocalManga +import org.koitharu.kotatsu.local.data.LocalStorageChanges import org.koitharu.kotatsu.local.data.LocalStorageManager import org.koitharu.kotatsu.local.data.TempFileFilter import org.koitharu.kotatsu.local.data.input.LocalMangaInput @@ -35,7 +37,10 @@ import javax.inject.Singleton private const val MAX_PARALLELISM = 4 @Singleton -class LocalMangaRepository @Inject constructor(private val storageManager: LocalStorageManager) : MangaRepository { +class LocalMangaRepository @Inject constructor( + private val storageManager: LocalStorageManager, + @LocalStorageChanges private val localStorageChanges: MutableSharedFlow, +) : MangaRepository { override val source = MangaSource.LOCAL private val locks = CompositeMutex() @@ -85,13 +90,18 @@ class LocalMangaRepository @Inject constructor(private val storageManager: Local suspend fun delete(manga: Manga): Boolean { val file = Uri.parse(manga.url).toFile() - return file.deleteAwait() + val result = file.deleteAwait() + if (result) { + localStorageChanges.emit(null) + } + return result } suspend fun deleteChapters(manga: Manga, ids: Set) { lockManga(manga.id) try { LocalMangaUtil(manga).deleteChapters(ids) + localStorageChanges.emit(LocalManga(manga)) } finally { unlockManga(manga.id) }