mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	| @@ -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() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user