package Ġio . github . hor ac io come 1 . re aque . data . feed Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . Query Ċ import Ġio . github . hor ac io come 1 . re aque . data . posts . Post Ċ import Ġio . github . hor ac io come 1 . re aque . util . posts Ċ Ċ class ĠFeed Service Ġ: ĠFeed Interface Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdb : ĠFirebase Fire store Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Fire store . getInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġauth : ĠFirebase Auth Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ posts Ġ= Ġmutable ListOf < Post >() ĊĊĠĠĠ Ġprivate Ġval Ġposts : ĠMutable LiveData < List < Post >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < List < Post >> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget (): ĠLive Data < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( auth . currentUser Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth . add Auth State Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ posts . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġit . currentUser Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ_ posts . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Feed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ(_ posts . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Feed () ĊĠĠĠĠĠĠĠ Ġreturn Ġposts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Feed () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . collection (" users /${ auth . currentUser !!. uid }/ feed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy (" timestamp ", ĠQuery . Direction . DESC ENDING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ posts Ġ= Ġit . posts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . value Ġ= Ġ_ posts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }