From 1c7a81b7adbb7638f75f485be12c775a1650b847 Mon Sep 17 00:00:00 2001
From: jobobby04 <jobobby04@users.noreply.github.com>
Date: Mon, 2 May 2022 08:31:50 -0400
Subject: [PATCH] Properly modify StateFlow value (#7059)

(cherry picked from commit ed8a54bd2ae58f9fb58d1d92318b5dcb4c7ce3f5)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt
---
 .../migration/manga/MigrationMangaPresenter.kt  |  4 ++--
 .../sources/MigrationSourcesPresenter.kt        |  4 ++--
 .../ui/browse/source/SourceFilterPresenter.kt   |  4 ++--
 .../ui/browse/source/SourcePresenter.kt         | 14 ++++++--------
 .../kanade/tachiyomi/ui/more/MorePresenter.kt   | 17 ++++++++---------
 .../ui/recent/history/HistoryPresenter.kt       |  4 ++--
 6 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt
index f98a2de62..75ff5b430 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt
@@ -26,10 +26,10 @@ class MigrationMangaPresenter(
             getFavoritesBySourceId
                 .subscribe(sourceId)
                 .catch { exception ->
-                    _state.emit(MigrateMangaState.Error(exception))
+                    _state.value = MigrateMangaState.Error(exception)
                 }
                 .collectLatest { list ->
-                    _state.emit(MigrateMangaState.Success(list))
+                    _state.value = MigrateMangaState.Success(list)
                 }
         }
     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesPresenter.kt
index 37a2c1069..019d31817 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesPresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesPresenter.kt
@@ -28,10 +28,10 @@ class MigrationSourcesPresenter(
         presenterScope.launchIO {
             getSourcesWithFavoriteCount.subscribe()
                 .catch { exception ->
-                    _state.emit(MigrateSourceState.Error(exception))
+                    _state.value = MigrateSourceState.Error(exception)
                 }
                 .collectLatest { sources ->
-                    _state.emit(MigrateSourceState.Success(sources))
+                    _state.value = MigrateSourceState.Success(sources)
                 }
         }
     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterPresenter.kt
index 2d9847086..e8619dd52 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterPresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterPresenter.kt
@@ -35,11 +35,11 @@ class SourceFilterPresenter(
         presenterScope.launchIO {
             getLanguagesWithSources.subscribe()
                 .catch { exception ->
-                    _state.emit(SourceFilterState.Error(exception))
+                    _state.value = SourceFilterState.Error(exception)
                 }
                 .collectLatest { sourceLangMap ->
                     val uiModels = sourceLangMap.toFilterUiModels()
-                    _state.emit(SourceFilterState.Success(uiModels))
+                    _state.value = SourceFilterState.Success(uiModels)
                 }
         }
     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt
index 9cb01685e..d8019695c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt
@@ -56,7 +56,7 @@ class SourcePresenter(
             ::collectLatestSources
         )
             .catch { exception ->
-                _state.emit(SourceState.Error(exception))
+                _state.value = SourceState.Error(exception)
             }
             .flowOn(Dispatchers.IO)
             .launchIn(presenterScope)
@@ -95,13 +95,11 @@ class SourcePresenter(
                 }.toTypedArray(),
             )
         }
-        _state.emit(
-            SourceState.Success(
-                uiModels,
-                categories.sortedWith(compareByDescending(String.CASE_INSENSITIVE_ORDER) { it }),
-                showLatest,
-                showPin
-            )
+        _state.value = SourceState.Success(
+            uiModels,
+            categories.sortedWith(compareByDescending(String.CASE_INSENSITIVE_ORDER) { it }),
+            showLatest,
+            showPin
         )
     }
 
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MorePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MorePresenter.kt
index 63202ab63..17356d1e6 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MorePresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MorePresenter.kt
@@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
 import eu.kanade.tachiyomi.util.lang.launchIO
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
 import rx.Observable
 import rx.Subscription
 import rx.android.schedulers.AndroidSchedulers
@@ -29,7 +30,7 @@ class MorePresenter(
     // SY <--
 
     private var _state: MutableStateFlow<DownloadQueueState> = MutableStateFlow(DownloadQueueState.Stopped)
-    val downloadQueueState: StateFlow<DownloadQueueState> = _state
+    val downloadQueueState: StateFlow<DownloadQueueState> = _state.asStateFlow()
 
     private var isDownloading: Boolean = false
     private var downloadQueueSize: Int = 0
@@ -71,14 +72,12 @@ class MorePresenter(
     private fun updateDownloadQueueState() {
         presenterScope.launchIO {
             val pendingDownloadExists = downloadQueueSize != 0
-            _state.emit(
-                when {
-                    !pendingDownloadExists -> DownloadQueueState.Stopped
-                    !isDownloading && !pendingDownloadExists -> DownloadQueueState.Paused(0)
-                    !isDownloading && pendingDownloadExists -> DownloadQueueState.Paused(downloadQueueSize)
-                    else -> DownloadQueueState.Downloading(downloadQueueSize)
-                }
-            )
+            _state.value = when {
+                !pendingDownloadExists -> DownloadQueueState.Stopped
+                !isDownloading && !pendingDownloadExists -> DownloadQueueState.Paused(0)
+                !isDownloading && pendingDownloadExists -> DownloadQueueState.Paused(downloadQueueSize)
+                else -> DownloadQueueState.Downloading(downloadQueueSize)
+            }
         }
     }
 
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt
index a04abbe6e..75306324d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt
@@ -53,14 +53,14 @@ class HistoryPresenter(
             _query.collectLatest { query ->
                 getHistory.subscribe(query)
                     .catch { exception ->
-                        _state.emit(HistoryState.Error(exception))
+                        _state.value = HistoryState.Error(exception)
                     }
                     .map { pagingData ->
                         pagingData.toHistoryUiModels()
                     }
                     .cachedIn(presenterScope)
                     .let { uiModelsPagingDataFlow ->
-                        _state.emit(HistoryState.Success(uiModelsPagingDataFlow))
+                        _state.value = HistoryState.Success(uiModelsPagingDataFlow)
                     }
             }
         }