Properly modify StateFlow value (#7059)
(cherry picked from commit ed8a54bd2ae58f9fb58d1d92318b5dcb4c7ce3f5) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt
This commit is contained in:
parent
c6c6cb3033
commit
1c7a81b7ad
@ -26,10 +26,10 @@ class MigrationMangaPresenter(
|
|||||||
getFavoritesBySourceId
|
getFavoritesBySourceId
|
||||||
.subscribe(sourceId)
|
.subscribe(sourceId)
|
||||||
.catch { exception ->
|
.catch { exception ->
|
||||||
_state.emit(MigrateMangaState.Error(exception))
|
_state.value = MigrateMangaState.Error(exception)
|
||||||
}
|
}
|
||||||
.collectLatest { list ->
|
.collectLatest { list ->
|
||||||
_state.emit(MigrateMangaState.Success(list))
|
_state.value = MigrateMangaState.Success(list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,10 +28,10 @@ class MigrationSourcesPresenter(
|
|||||||
presenterScope.launchIO {
|
presenterScope.launchIO {
|
||||||
getSourcesWithFavoriteCount.subscribe()
|
getSourcesWithFavoriteCount.subscribe()
|
||||||
.catch { exception ->
|
.catch { exception ->
|
||||||
_state.emit(MigrateSourceState.Error(exception))
|
_state.value = MigrateSourceState.Error(exception)
|
||||||
}
|
}
|
||||||
.collectLatest { sources ->
|
.collectLatest { sources ->
|
||||||
_state.emit(MigrateSourceState.Success(sources))
|
_state.value = MigrateSourceState.Success(sources)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,11 +35,11 @@ class SourceFilterPresenter(
|
|||||||
presenterScope.launchIO {
|
presenterScope.launchIO {
|
||||||
getLanguagesWithSources.subscribe()
|
getLanguagesWithSources.subscribe()
|
||||||
.catch { exception ->
|
.catch { exception ->
|
||||||
_state.emit(SourceFilterState.Error(exception))
|
_state.value = SourceFilterState.Error(exception)
|
||||||
}
|
}
|
||||||
.collectLatest { sourceLangMap ->
|
.collectLatest { sourceLangMap ->
|
||||||
val uiModels = sourceLangMap.toFilterUiModels()
|
val uiModels = sourceLangMap.toFilterUiModels()
|
||||||
_state.emit(SourceFilterState.Success(uiModels))
|
_state.value = SourceFilterState.Success(uiModels)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ class SourcePresenter(
|
|||||||
::collectLatestSources
|
::collectLatestSources
|
||||||
)
|
)
|
||||||
.catch { exception ->
|
.catch { exception ->
|
||||||
_state.emit(SourceState.Error(exception))
|
_state.value = SourceState.Error(exception)
|
||||||
}
|
}
|
||||||
.flowOn(Dispatchers.IO)
|
.flowOn(Dispatchers.IO)
|
||||||
.launchIn(presenterScope)
|
.launchIn(presenterScope)
|
||||||
@ -95,13 +95,11 @@ class SourcePresenter(
|
|||||||
}.toTypedArray(),
|
}.toTypedArray(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
_state.emit(
|
_state.value = SourceState.Success(
|
||||||
SourceState.Success(
|
uiModels,
|
||||||
uiModels,
|
categories.sortedWith(compareByDescending(String.CASE_INSENSITIVE_ORDER) { it }),
|
||||||
categories.sortedWith(compareByDescending(String.CASE_INSENSITIVE_ORDER) { it }),
|
showLatest,
|
||||||
showLatest,
|
showPin
|
||||||
showPin
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
|
|||||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import rx.Subscription
|
import rx.Subscription
|
||||||
import rx.android.schedulers.AndroidSchedulers
|
import rx.android.schedulers.AndroidSchedulers
|
||||||
@ -29,7 +30,7 @@ class MorePresenter(
|
|||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
private var _state: MutableStateFlow<DownloadQueueState> = MutableStateFlow(DownloadQueueState.Stopped)
|
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 isDownloading: Boolean = false
|
||||||
private var downloadQueueSize: Int = 0
|
private var downloadQueueSize: Int = 0
|
||||||
@ -71,14 +72,12 @@ class MorePresenter(
|
|||||||
private fun updateDownloadQueueState() {
|
private fun updateDownloadQueueState() {
|
||||||
presenterScope.launchIO {
|
presenterScope.launchIO {
|
||||||
val pendingDownloadExists = downloadQueueSize != 0
|
val pendingDownloadExists = downloadQueueSize != 0
|
||||||
_state.emit(
|
_state.value = when {
|
||||||
when {
|
!pendingDownloadExists -> DownloadQueueState.Stopped
|
||||||
!pendingDownloadExists -> DownloadQueueState.Stopped
|
!isDownloading && !pendingDownloadExists -> DownloadQueueState.Paused(0)
|
||||||
!isDownloading && !pendingDownloadExists -> DownloadQueueState.Paused(0)
|
!isDownloading && pendingDownloadExists -> DownloadQueueState.Paused(downloadQueueSize)
|
||||||
!isDownloading && pendingDownloadExists -> DownloadQueueState.Paused(downloadQueueSize)
|
else -> DownloadQueueState.Downloading(downloadQueueSize)
|
||||||
else -> DownloadQueueState.Downloading(downloadQueueSize)
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,14 +53,14 @@ class HistoryPresenter(
|
|||||||
_query.collectLatest { query ->
|
_query.collectLatest { query ->
|
||||||
getHistory.subscribe(query)
|
getHistory.subscribe(query)
|
||||||
.catch { exception ->
|
.catch { exception ->
|
||||||
_state.emit(HistoryState.Error(exception))
|
_state.value = HistoryState.Error(exception)
|
||||||
}
|
}
|
||||||
.map { pagingData ->
|
.map { pagingData ->
|
||||||
pagingData.toHistoryUiModels()
|
pagingData.toHistoryUiModels()
|
||||||
}
|
}
|
||||||
.cachedIn(presenterScope)
|
.cachedIn(presenterScope)
|
||||||
.let { uiModelsPagingDataFlow ->
|
.let { uiModelsPagingDataFlow ->
|
||||||
_state.emit(HistoryState.Success(uiModelsPagingDataFlow))
|
_state.value = HistoryState.Success(uiModelsPagingDataFlow)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user