mirror of
https://github.com/aniyomiorg/aniyomi.git
synced 2024-11-23 13:23:28 +03:00
parent
e1adb89ff8
commit
7e92921f84
2 changed files with 32 additions and 30 deletions
|
@ -22,7 +22,6 @@ import kotlinx.coroutines.flow.collectLatest
|
|||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
import kotlinx.coroutines.flow.update
|
||||
import rx.Observable
|
||||
import uy.kohesive.injekt.Injekt
|
||||
|
@ -78,9 +77,9 @@ class ExtensionsPresenter(
|
|||
presenterScope.launchIO {
|
||||
combine(
|
||||
_query,
|
||||
getExtensions.subscribe().stateIn(presenterScope),
|
||||
_currentDownloads,
|
||||
) { query, (_updates, _installed, _available, _untrusted), downloads ->
|
||||
getExtensions.subscribe(),
|
||||
) { query, downloads, (_updates, _installed, _available, _untrusted) ->
|
||||
val searchQuery = query ?: ""
|
||||
|
||||
val languagesWithExtensions = _available
|
||||
|
@ -137,15 +136,16 @@ class ExtensionsPresenter(
|
|||
fun updateAllExtensions() {
|
||||
presenterScope.launchIO {
|
||||
if (state.isEmpty) return@launchIO
|
||||
val items = state.items
|
||||
items.mapNotNull {
|
||||
if (it !is ExtensionUiModel.Item) return@mapNotNull null
|
||||
if (it.extension !is Extension.Installed) return@mapNotNull null
|
||||
if (it.extension.hasUpdate.not()) return@mapNotNull null
|
||||
it.extension
|
||||
}.forEach {
|
||||
updateExtension(it)
|
||||
}
|
||||
state.items
|
||||
.mapNotNull {
|
||||
when {
|
||||
it !is ExtensionUiModel.Item -> null
|
||||
it.extension !is Extension.Installed -> null
|
||||
!it.extension.hasUpdate -> null
|
||||
else -> it.extension
|
||||
}
|
||||
}
|
||||
.forEach { updateExtension(it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -102,25 +102,27 @@ class UpdatesPresenter(
|
|||
}
|
||||
|
||||
private fun List<UpdatesWithRelations>.toUpdateItems(): List<UpdatesItem> {
|
||||
return this.map { update ->
|
||||
val activeDownload = downloadManager.queue.find { update.chapterId == it.chapter.id }
|
||||
val downloaded = downloadManager.isChapterDownloaded(
|
||||
update.chapterName,
|
||||
update.scanlator,
|
||||
update.mangaTitle,
|
||||
update.sourceId,
|
||||
)
|
||||
val downloadState = when {
|
||||
activeDownload != null -> activeDownload.status
|
||||
downloaded -> Download.State.DOWNLOADED
|
||||
else -> Download.State.NOT_DOWNLOADED
|
||||
return this
|
||||
.distinctBy { it.chapterId }
|
||||
.map {
|
||||
val activeDownload = downloadManager.queue.find { download -> it.chapterId == download.chapter.id }
|
||||
val downloaded = downloadManager.isChapterDownloaded(
|
||||
it.chapterName,
|
||||
it.scanlator,
|
||||
it.mangaTitle,
|
||||
it.sourceId,
|
||||
)
|
||||
val downloadState = when {
|
||||
activeDownload != null -> activeDownload.status
|
||||
downloaded -> Download.State.DOWNLOADED
|
||||
else -> Download.State.NOT_DOWNLOADED
|
||||
}
|
||||
UpdatesItem(
|
||||
update = it,
|
||||
downloadStateProvider = { downloadState },
|
||||
downloadProgressProvider = { activeDownload?.progress ?: 0 },
|
||||
)
|
||||
}
|
||||
UpdatesItem(
|
||||
update = update,
|
||||
downloadStateProvider = { downloadState },
|
||||
downloadProgressProvider = { activeDownload?.progress ?: 0 },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun observeDownloads() {
|
||||
|
|
Loading…
Reference in a new issue