Использование MutableSharedFlow в сочетании со стандартным потоком
Я не уверен, как я могу решить эту проблему. У меня есть переменная, в которой я храню
combine
поток. Мне нужно объединить MutableSharedFlow и Flow. Это код, который я использую
val users = combine(
reloadUsers,
nicknameQuery.asFlow()
) { reloadUsers, nicknameQuery->
Pair(reloadUsers, nicknameQuery)
}.flatMapLatest { (reloadUsers, nicknameQuery) ->
Log.d(TAG, "Querying users")
repository.users(0,
nicknameQuery,
reloadUsers == Refresh.FORCE,
onFetchError = {
viewModelScope.launch {
_userListShared.emit(UserListStateEvent.ErrorState(it))
}
}
)
}.stateIn(viewModelScope, SharingStarted.Lazily, null).asLiveData()
Вот определение reloadUsers
private val reloadUsers = MutableSharedFlow<Refresh>()
А вот и определение для никнейма
private val nicknameQuery = MutableStateFlow<String>("")
Я использую nickbnameQuery для запуска запроса по нику и reloadUsers для принудительной выборки из сети.
Внутри модели представления я использую этот код для обновления reloadUsers
viewModelScope.launch {
reloadUsers.emit(Refresh.FORCE)
}
Моя проблема заключается в том, что я меняю значение NickQuery после запуска Refresh.FORCE на reloadUsers. Потому что каждый раз, когда я меняю ник Query, это выполняет комбайн, но в reloadUsers у меня снова FORCE. Я хотел бы использовать MutableSharedFlow просто как «триггер», поэтому он вызывает перезагрузку только тогда, когда я хочу ее принудительно выполнить. Я должен сбросить значение SharedFlow, но как мне правильно с этим справиться?