/* Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠO ba ida ĠAl ĠMost ari hi Ġon Ġ 7 / 1 3 / 2 1 , Ġ 2 : 1 6 ĠPM Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġ. ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLast Ġmodified Ġ 7 / 1 3 / 2 1 , Ġ 2 : 1 6 ĠPM Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . yor on . ner d so ver flow . repositories Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . google . firebase . firestore . Document Reference Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ import Ġcom . google . firebase . firestore . Query Ċ import Ġcom . yor on . ner d so ver flow . classes . Data Or Exception Ċ import Ġcom . yor on . ner d so ver flow . models . Home Post Model Ċ import Ġcom . yor on . ner d so ver flow . models . User Model Ċ import Ġcom . yor on . ner d so ver flow . view _ models . Home Posts List Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . tasks . await Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Named Ċ Ċ class ĠHome Posts Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ Named ( value Ġ= Ġ" posts Ref ") ĊĠĠĠ Ġval Ġhome Posts Query : ĠQuery Ċ ): ĠRepository () Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġget Posts Data ( ĊĠĠĠĠĠĠĠ Ġdocument Snapshot : ĠDocument Snapshot ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdata Or Exception : Ġ( Data Or Exception < Home Posts List , ĠException >) Ġ-> ĠUnit ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Or Exception Var Ġ= ĠData Or Exception < Home Posts List , ĠException >() ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġif Ġ( document Snapshot Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Posts Query ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Posts Query . start After ( document Snapshot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Or Exception Var . data Ġ= Ġquery . get (). await (). map NotNull Ġ{ Ġdocument Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġdocument . toObject ( Home Post Model :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . copy ( document Snapshot Ġ= Ġdocument , user Ġ= ĠgetUser Details ( model . user Reference )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Or Exception Var . e Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" lo ool " Ġ, Ġe . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Or Exception ( data Or Exception Var ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" lo ool ", Ġit . localized Message ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Specific User Posts ( ĊĠĠĠĠĠĠĠ Ġdocument Snapshot : ĠDocument Snapshot ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġuser Ref : ĠDocument Reference , ĊĠĠĠĠĠĠĠ Ġdata Or Exception : Ġ( Data Or Exception < Home Posts List , ĠException >) Ġ-> ĠUnit ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Or Exception Var Ġ= ĠData Or Exception < Home Posts List , ĠException >() ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġif Ġ( document Snapshot Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Posts Query . where EqualTo (" user Reference " Ġ, Ġuser Ref ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Posts Query . where EqualTo (" user Reference " Ġ, Ġuser Ref ). start After ( document Snapshot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Or Exception Var . data Ġ= Ġquery . get (). await (). map NotNull Ġ{ Ġdocument Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġdocument . toObject ( Home Post Model :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . copy ( document Snapshot Ġ= Ġdocument , user Ġ= ĠgetUser Details ( model . user Reference )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Or Exception Var . e Ġ= Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" lo ool " Ġ, Ġe . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Or Exception ( data Or Exception Var ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" lo ool ", Ġit . localized Message ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġ} Ċ Ċ }