Использование 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, но как мне правильно с этим справиться?

0 ответов

Другие вопросы по тегам