в дата-слое, если домен и сама дата часто обращается к ней с чтением/записью, и при её обновлении (этой переменной) она эмитится в горячий поток, и дальше уже обрабатывается.
Сейчас это просто помещено в переменную (дата класс), но вроде это неверный подход? Что лучше использовать, если эти данные нужны только на время существования приложения? Room с inMemoryDatabaseBuilder?
Или, может, попроще сформулированный вопрос – как правильно хранить состояние на уровне дата-слоя, если это состояние эмитится в горячий поток после каждого изменения?
Может есть какой-нибудь совет по вопросу..?
Ну просто создаёшь класс на уровне дата слоя. Называешь его типа DataStore и хранишь некий Flow sealed class со всеми тебе состояними
Сейчас это переменная-дата класс... А что подразумевается под "хранишь flow"..? Там ведь если не подписался заранее, ты не сможешь получить какое-нибудь состояние до эмита Состояние не такое базовое, как через sealed или enum... Там и инты, и булен, и массивы разных типов
class DataStore { val state:Flow<State> } sealed class State<T>(val data: T? = Null){ object Empty: State() class Has(data:T) : State(data) }
И там вообще пох когда ты подписался на данные. Ты схватишт то что есть
Я вроде пробовал с first() и холодным потоком, но что-то не пошло... Ладно, ещё раз гляну
Ой про first не помню. Мб он вернёт пустое значение. Просто делаешь collect
Collect подписывается и вроде висит, функа до конца не отрабатывает
Что значит до конца не отрабатывает?
Она на collect останавливается и продолжает слушать обновления в потоке
Обсуждают сегодня