Compose, MVI и MutableState: как внутри ВьюМодели триггерить новое обращение к БД, не создавая лишних сущностей?
я тяну данные из БД при попощи 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
?
Заранее спасибо.
Источник: Stack Overflow на русском