package Ġcom . f ur kan ask in . app . pod po cket . ui . feed . global _ feed Ċ Ċ import Ġandroidx . databinding . Observable ArrayList Ċ import Ġcom . f ur kan ask in . app . pod po cket . core . Base ViewModel Ċ import Ġcom . f ur kan ask in . app . pod po cket . db . App Database Ċ import Ġcom . f ur kan ask in . app . pod po cket . db . entities . Post Entity Ċ import Ġcom . f ur kan ask in . app . pod po cket . model . Post Ċ import Ġcom . f ur kan ask in . app . pod po cket . service . Pod po cket API Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġjavax . inject . Inject Ċ import Ġorg . jetbrains . ank o . do Async Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠF ur kan Ġon Ġ 2 0 1 9 - 0 5 - 2 6 Ċ Ġ*/ Ċ Ċ class ĠGlobal Feed ViewModel Ġ@ Inject Ġconstructor ( api : ĠPod po cket API , Ġapp Database : ĠApp Database ) Ġ: ĊĠĠĠ ĠBase ViewModel ( api , Ġapp Database ) Ġ{ ĊĠĠĠ Ġvar Ġposts : ĠObservable ArrayList < Post ?> Ġ= ĠObservable ArrayList () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġget Global Posts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Global Posts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposts Ref Ġ= ĠFirebase Database . getInstance (). getReference (" posts ") ĊĠĠĠĠĠĠĠ Ġposts Ref . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Posts Ġ= Ġsnapshot . children ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Posts . forEach Indexed Ġ{ Ġ_, Ġdata Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġdata Snapshot . getValue ( Post :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . add ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ?. let Ġ{ Ġwrite Post To DB ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite Post To DB ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Entity Ġ= ĠPost Entity ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb ?. posts Dao ()?. insert Post ( post Entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }