Browse Source

DownloadController: Fix first active download status not updating (#8069)

Ivan Iskandar 2 years ago
parent
commit
f98b4f4e39

+ 3 - 1
app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt

@@ -75,7 +75,9 @@ class DownloadQueue(
         Observable.from(this).filter { download -> download.status == Download.State.DOWNLOADING }
 
     @Deprecated("Use getStatusAsFlow instead")
-    fun getStatusObservable(): Observable<Download> = statusSubject.onBackpressureBuffer()
+    fun getStatusObservable(): Observable<Download> = statusSubject
+        .startWith(getActiveDownloads())
+        .onBackpressureBuffer()
 
     fun getStatusAsFlow(): Flow<Download> = getStatusObservable().asFlow()
 

+ 9 - 13
app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt

@@ -90,19 +90,6 @@ class DownloadController :
 
     override fun createPresenter() = DownloadPresenter()
 
-    override fun onViewCreated(view: View) {
-        super.onViewCreated(view)
-
-        viewScope.launchUI {
-            presenter.getDownloadStatusFlow()
-                .collect(this@DownloadController::onStatusChange)
-        }
-        viewScope.launchUI {
-            presenter.getDownloadProgressFlow()
-                .collect(this@DownloadController::onUpdateDownloadedPages)
-        }
-    }
-
     @Composable
     override fun ComposeContent() {
         val context = LocalContext.current
@@ -291,6 +278,15 @@ class DownloadController :
 
                         ViewCompat.setNestedScrollingEnabled(controllerBinding.root, true)
 
+                        viewScope.launchUI {
+                            presenter.getDownloadStatusFlow()
+                                .collect(this@DownloadController::onStatusChange)
+                        }
+                        viewScope.launchUI {
+                            presenter.getDownloadProgressFlow()
+                                .collect(this@DownloadController::onUpdateDownloadedPages)
+                        }
+
                         controllerBinding.root
                     },
                     update = {