package Ġcom . p ablo dist e . android . sample . ui . realm . stream Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . p ablo dist e . android . datastore . Store Response Ċ import Ġcom . p ablo dist e . android . datastore . clo s able . auto Close Ċ import Ġcom . p ablo dist e . android . datastore . clo s able . stream Ċ import Ġcom . p ablo dist e . android . sample . models . realm . People Ċ import Ġcom . p ablo dist e . android . sample . repositories . store . realm . Realm People Store Ċ import Ġcom . p ablo dist e . android . sample . repositories . store . realm . Realm Plan ets Store Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . job Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠStream Example ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpeople Store 1 Ġ= ĠRealm People Store () ĊĠĠĠ Ġprivate Ġval Ġpeople Store 2 Ġ= ĠRealm People Store () ĊĠĠĠ Ġprivate Ġval Ġplanet Store Ġ= ĠRealm Plan ets Store () ĊĠĠĠ Ġval Ġui State Ġ= ĠMutable State Flow < List < People >>( listOf ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpeople Store 1 . stream ( refresh Ġ= Ġtrue ). map Ġ{ Ġit . require Data () Ġ}. collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Stream Ġ 1 : Ġ$ result ĠReceived Ġnew ĠPeople ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State . value Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. auto Close ( people Store 1 ) ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( people Store 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpeople Store 2 . stream ( refresh Ġ= Ġtrue ). collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Stream Ġ 2 : Ġ${ result . origin } ĠReceived Ġnew ĠPeople ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// people . forEach Ġ{ ĠLog . d ( TAG , Ġ" People : Ġ$ it ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State . value Ġ= Ġresult . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( planet Store ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplanet Store . stream ( refresh Ġ= Ġtrue ). collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Stream Ġ 3 : Ġ${ result . origin } ĠReceived Ġnew ĠPlan ets ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ui State . value Ġ= Ġpeople Store . get (). value ĊĠĠĠĠĠĠĠ Ġpeople Store 1 . something () ĊĊĠĠĠĠĠĠĠ ĠviewModel Scope . coroutine Context . job . invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Completion ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG : ĠString Ġ= ĠStream Example ViewModel :: class . java . simple Name ĊĠĠĠ Ġ} Ċ }