mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	Properly modify StateFlow value (#7059)
This commit is contained in:
		@@ -27,10 +27,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)
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -31,11 +31,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)
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ class SourcePresenter(
 | 
			
		||||
        presenterScope.launchIO {
 | 
			
		||||
            getEnabledSources.subscribe()
 | 
			
		||||
                .catch { exception ->
 | 
			
		||||
                    _state.emit(SourceState.Error(exception))
 | 
			
		||||
                    _state.value = SourceState.Error(exception)
 | 
			
		||||
                }
 | 
			
		||||
                .collectLatest(::collectLatestSources)
 | 
			
		||||
        }
 | 
			
		||||
@@ -71,7 +71,7 @@ class SourcePresenter(
 | 
			
		||||
                }.toTypedArray(),
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
        _state.emit(SourceState.Success(uiModels))
 | 
			
		||||
        _state.value = SourceState.Success(uiModels)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun toggleSource(source: Source) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -24,7 +25,7 @@ class MorePresenter(
 | 
			
		||||
    val incognitoMode = preferencesHelper.incognitoMode().asState()
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
@@ -66,14 +67,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)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
                    }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user