package Ġhu . sz to mek . wh eres my buddy . domain . use case čĊč Ċ import Ġhu . sz to mek . wh eres my buddy . domain . ID at as ource č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . action . Action č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . common . App Schedulers č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . common . Result č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . model . Incoming Requests ListModel č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . model . Pending Connection Request Item Model č Ċ import Ġio . reactivex . Observable č Ċ import Ġio . reactivex . Single č Ċ import Ġjavax . inject . Inject čĊč Ċ class ĠList Incoming Requests UseCase Ġ@ Inject Ġconstructor ( private Ġval Ġapp Schedulers : ĠApp Schedulers , Ġprivate Ġval Ġdatasource : ĠID at as ource ) Ġ{ čĊčĊĠĠĠ Ġfun Ġexecute ( action : ĠAction . List Incoming Requests Action ): ĠSingle < Result > Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġdatasource . getActive User () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . from Last Id ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatasource . list Incoming Requests ( it . id !! , Ġaction . filter Name , Ġaction . last Id , Ġaction . limit !! ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatasource . list All Incoming Requests Until ( it . id !! , Ġaction . filter Name , Ġaction . last Id !! ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatten As Observable Ġ{ Ġit Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġcr Model Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatasource . get Profile ( cr Model . from !! ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( Pending Connection Request Item Model ( it , Ġcr Model )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. sorted ({ Ġitem 1 , Ġitem 2 Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( item 1 . user Model . displayName Ġ?: Ġ" N / A "). compareTo ( item 2 . user Model . displayName Ġ?: Ġ" N / A ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĠSingle . just ( Result . complete ( action , ĠIncoming Requests ListModel ( it ))) Ġ} čĊĠĠĠ Ġ} čĊč Ċ }