From 7edf8dd555c71b20b9a69859e4d8224a9a4cf4e3 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 25 Jul 2022 14:31:41 +0200 Subject: [PATCH] Use SharedFlow for available extensions to always emit the value (#7609) - Fixes Extension screen being stuck refreshing due to StateFlow not emitting due to the value being the same (cherry picked from commit 73901f50c0aee1cb82695642af72ff6ac7bc232d) --- .../eu/kanade/tachiyomi/extension/ExtensionManager.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index 24a10b028..ae2abcff7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -25,8 +25,11 @@ import exh.source.EH_SOURCE_ID import exh.source.EXH_SOURCE_ID import exh.source.MERGED_SOURCE_ID import kotlinx.coroutines.async +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import logcat.LogPriority import rx.Observable @@ -107,15 +110,15 @@ class ExtensionManager( var availableExtensions = emptyList() private set(value) { field = value - availableExtensionsFlow.value = field + availableExtensionsFlow.tryEmit(field) updatedInstalledExtensionsStatuses(value) setupAvailableExtensionsSourcesDataMap(value) } - private val availableExtensionsFlow = MutableStateFlow(availableExtensions) + private val availableExtensionsFlow = MutableSharedFlow>(replay = 1) - fun getAvailableExtensionsFlow(): StateFlow> { - return availableExtensionsFlow.asStateFlow() + fun getAvailableExtensionsFlow(): Flow> { + return availableExtensionsFlow.asSharedFlow() } private var availableExtensionsSourcesData: Map = mapOf()