Remove fake chapter deletion state updates

Now that the updates and manga screen listen to download cache changes, it'll reflect the real states once deleted.

(cherry picked from commit d0bff298b7df3524f76434a3636bc196627cb613)
This commit is contained in:
arkon 2022-10-22 12:24:59 -04:00 committed by Jobobby04
parent 1bef917db7
commit bd9125f9fe
2 changed files with 7 additions and 39 deletions

View File

@ -1167,28 +1167,13 @@ class MangaPresenter(
*/ */
fun deleteChapters(chapters: List<DomainChapter>) { fun deleteChapters(chapters: List<DomainChapter>) {
presenterScope.launchNonCancellable { presenterScope.launchNonCancellable {
val chapters2 = chapters.map { it.toDbChapter() }
try { try {
updateSuccessState { successState -> successState?.let { state ->
val deletedIds = downloadManager downloadManager.deleteChapters(
.deleteChapters(chapters2, successState.manga, successState.source) chapters.map { it.toDbChapter() },
.map { it.id } state.manga,
val deletedChapters = successState.chapters.filter { deletedIds.contains(it.chapter.id) } state.source,
if (deletedChapters.isEmpty()) return@updateSuccessState successState )
// TODO: Don't do this fake status update
val newChapters = successState.chapters.toMutableList().apply {
deletedChapters.forEach {
val index = indexOf(it)
val toAdd = removeAt(index)
.copy(
downloadState = Download.State.NOT_DOWNLOADED,
downloadProgress = 0,
)
add(index, toAdd)
}
}
successState.copy(chapters = newChapters)
} }
} catch (e: Throwable) { } catch (e: Throwable) {
logcat(LogPriority.ERROR, e) logcat(LogPriority.ERROR, e)

View File

@ -257,30 +257,13 @@ class UpdatesPresenter(
fun deleteChapters(updatesItem: List<UpdatesItem>) { fun deleteChapters(updatesItem: List<UpdatesItem>) {
presenterScope.launchNonCancellable { presenterScope.launchNonCancellable {
val groupedUpdates = updatesItem.groupBy { it.update.mangaId }.values val groupedUpdates = updatesItem.groupBy { it.update.mangaId }.values
val deletedIds = groupedUpdates.flatMap { updates -> groupedUpdates.flatMap { updates ->
val mangaId = updates.first().update.mangaId val mangaId = updates.first().update.mangaId
val manga = getManga.await(mangaId) ?: return@flatMap emptyList() val manga = getManga.await(mangaId) ?: return@flatMap emptyList()
val source = sourceManager.get(manga.source) ?: return@flatMap emptyList() val source = sourceManager.get(manga.source) ?: return@flatMap emptyList()
val chapters = updates.mapNotNull { getChapter.await(it.update.chapterId)?.toDbChapter() } val chapters = updates.mapNotNull { getChapter.await(it.update.chapterId)?.toDbChapter() }
downloadManager.deleteChapters(chapters, manga, source).mapNotNull { it.id } downloadManager.deleteChapters(chapters, manga, source).mapNotNull { it.id }
} }
val deletedUpdates = items.filter {
deletedIds.contains(it.update.chapterId)
}
if (deletedUpdates.isEmpty()) return@launchNonCancellable
// TODO: Don't do this fake status update
state.items = state.items.toMutableList().apply {
deletedUpdates.forEach { deletedUpdate ->
val modifiedIndex = indexOf(deletedUpdate)
val item = removeAt(modifiedIndex).copy(
downloadStateProvider = { Download.State.NOT_DOWNLOADED },
downloadProgressProvider = { 0 },
)
add(modifiedIndex, item)
}
}
} }
} }