package Ġcom . ek o app . ek os dk . u ikit . community . news feed . view model Ċ Ċ import Ġandroidx . paging . Paged List Ċ import Ġcom . ek o app . ek os dk . E ko Client Ċ import Ġcom . ek o app . ek os dk . E ko Comment Repository Ċ import Ġcom . ek o app . ek os dk . E ko Feed Repository Ċ import Ġcom . ek o app . ek os dk . comment . E ko Comment Ċ import Ġcom . ek o app . ek os dk . exception . E ko Error Ċ import Ġcom . ek o app . ek os dk . feed . E ko Post Ċ import Ġcom . ek o app . ek os dk . feed . E ko Post Target Ċ import Ġcom . ek o app . ek os dk . u ikit . base . E ko Base ViewModel Ċ import Ġcom . ek o app . ek os dk . u ikit . community . news feed . listener . I Avatar ClickListener Ċ import Ġcom . ek o app . ek os dk . u ikit . community . news feed . listener . IP ost Share Listener Ċ import Ġcom . ek o app . ek os dk . u ikit . feed . settings . E ko Feed UI Settings Ċ import Ġcom . ek o app . ek os dk . u ikit . feed . settings . IP ost Share ClickListener Ċ import Ġcom . ek o app . ek os dk . u ikit . model . Event Identifier Ċ import Ġcom . ek o app . ek os dk . u ikit . utils . Single LiveData Ċ import Ġcom . ek o app . ek os dk . user . E ko User Ċ import Ġcom . ek o app . rx lifecycle . extension . until Lifecycle End Ċ import Ġcom . google . gson . annotations . Until Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠE ko Post Details ViewModel Ġ: ĠE ko Base ViewModel (), ĠI Post Share Listener Ġ{ ĊĠĠĠ Ġvar Ġnews Feed : ĠE ko Post ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġavatar ClickListener : ĠI Avatar ClickListener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpost Share ClickListener : ĠI Post Share ClickListener ? Ġ= ĠE ko Feed UI Settings . post Share ClickListener ĊĊĠĠĠ Ġprivate Ġval Ġfeed Repository : ĠE ko Feed Repository Ġ= ĠE ko Client . new Feed Repository () ĊĠĠĠ Ġprivate Ġval Ġcomment Repository : ĠE ko Comment Repository Ġ= ĠE ko Client . new Comment Repository () ĊĊĠĠĠ Ġoverride Ġval Ġshare To My Timeline Action Relay Ġ= ĠSingle LiveData < Unit >() ĊĠĠĠ Ġoverride Ġval Ġshare To Group Action Relay Ġ= ĠSingle LiveData < Unit >() ĊĠĠĠ Ġoverride Ġval Ġshare To External App Action Relay Ġ= ĠSingle LiveData < Unit >() ĊĊĠĠĠ Ġfun Ġget Comments ( post Id : ĠString ): ĠFlow able < Paged List < E ko Comment >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomment Repository . get Comment Collection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( post Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. parentId ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. include Deleted ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. query () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Post Details ( id : ĠString ): ĠFlow able < E ko Post > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed Repository . getPost ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Post ( feed : ĠE ko Post ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed Repository . delete Post ( feed . getPost Id ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Comment ( ĊĠĠĠĠĠĠĠ ĠparentId : ĠString ?, ĊĠĠĠĠĠĠĠ Ġcomment Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpost Id : ĠString , ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ ĠonSuccess : Ġ() Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ ĠonError : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠSingle < E ko Comment > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomment Repository . create Comment ( comment Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( post Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. parentId ( parentId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. text ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. send () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE ko Client . new Feed Repository (). getPost ( post Id ). subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ignore Elements (). onError Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( E ko Error . from ( it ) Ġ== ĠE ko Error . BAN _ WORD _ FOUND ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Comment ( comment Id : ĠString ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomment Repository . delete Comment ( comment Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO Ġremove Ġafter Ġsdk Ġ( core ) Ġfix Ġbug Ġfor Ġfetch Ġpost Ġdata ĊĠĠĠ Ġfun Ġfetch Post Data ( post Id : ĠString ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed Repository . getPost ( post Id ). ignore Elements () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Comment ( comment : ĠE ko Comment ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomment . delete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent User (): ĠFlow able < E ko User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠE ko Client . getCurrent User () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcomment Show More Action Clicked ( feed : ĠE ko Post , Ġcomment : ĠE ko Comment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( comment . getUserId () Ġ== ĠE ko Client . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Event ( Event Identifier . SHOW _ COMMENT _ ACTION _ BY _ COMMENT _ OWNER , Ġcomment ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġuncomment Ġafter Ġserver Ġside Ġimplementation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġtarget Ġ= Ġfeed . getTarget () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Ġis ĠE ko Post Target . COMM UN ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommunity Ġ= Ġtarget . get Community () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( community Ġ!= Ġnull Ġ&& Ġcommunity . getUserId () Ġ== ĠE ko Client . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Event ( Event Identifier . SHOW _ COMMENT _ ACTION _ BY _ ADMIN , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Event ( Event Identifier . SHOW _ COMMENT _ ACTION _ BY _ OTHER _ USER , Ġcomment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Reaction ( lik ed : ĠBoolean , Ġe ko Post : ĠE ko Post ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( lik ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe ko Post . react (). add Reaction (" like ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe ko Post . react (). remove Reaction (" like ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfeed Show More Action Clicked ( feed : ĠE ko Post ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( feed . get Posted User ()?. getUserId () Ġ== ĠE ko Client . getUserId () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Event ( Event Identifier . SHOW _ FEED _ ACTION _ BY _ FEED _ OWNER , Ġfeed ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġuncomment Ġafter Ġserver Ġside Ġimplementation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġtarget Ġ= Ġfeed . getTarget () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Ġis ĠE ko Post Target . COMM UN ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommunity Ġ= Ġtarget . get Community () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( community Ġ!= Ġnull Ġ&& Ġcommunity . getUserId () Ġ== ĠE ko Client . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Event ( Event Identifier . SHOW _ FEED _ ACTION _ BY _ ADMIN , Ġfeed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrigger Event ( Event Identifier . SHOW _ FEED _ ACTION _ BY _ OTHER _ USER , Ġfeed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis ReadOnly Page (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġnews Feed ?. getTarget () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( target Ġ!= Ġnull Ġ&& Ġtarget Ġis ĠE ko Post Target . COMM UN ITY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommunity Ġ= Ġtarget . get Community () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcommunity ?. is Joined () Ġ== Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreport Post ( feed : ĠE ko Post ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed . report (). flag () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun report Post ( feed : ĠE ko Post ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed . report (). un flag () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreport Comment ( comment : ĠE ko Comment ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomment . report (). flag () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun report Comment ( comment : ĠE ko Comment ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomment . report (). un flag () ĊĠĠĠ Ġ} Ċ }