Compose, MVI и MutableState: как внутри ВьюМодели триггерить новое обращение к БД, не создавая лишних сущностей?

Рейтинг: 1Ответов: 0Опубликовано: 19.03.2023

я тяну данные из БД при попощи flow, которые дергает новые данные при изменении в одном из 2-х триггеров (seqrchQuery: String, categoriesToDisplay: List<Category>). С фрагментами это выглядит так (во вьюМодели):

init {  
    combine(
        searchQuery, // StateFlow
        categoriesToDisplay // StateFlow
    ) { query, categories ->
        Pair(query, categories)
    }.flatMapLatest { (q, c) ->
        vocabularyUseCases.observeWordsBySearchQueryInCategories(q, c)
    }.onEach {
        //todo handle the result
    }.launchIn(viewModelScope)
}

Сейчас я использую Compose и храню состояние в var state by mutableStateOf(MyState()), причем MyState уже содержит поля searchQuery и categoriesToDisplay.

Нужно ли создавать отдельные флоу для этих двух триггеров, или я могу как-то отслеживать их значение прям в этом state, и дергать при их изменении БД?

Не хотелось бы дублировать одни и те же данные в отдельные флоу.

Есть ли какой-то best practice для таких триггеров при использовании Compose и единого state?

Заранее спасибо.

Ответы

Ответов пока нет.