package Ġio . github . ton ny l . l att ic ify . ui . channel . members Ċ Ċ import Ġandroid . content . Intent Ċ import Ġcom . air bnb . e po xy . E po xy Model Ċ import Ġio . github . ton ny l . l att ic ify . data . User Ċ import Ġio . github . ton ny l . l att ic ify . data . repository . Con versations Repository Ċ import Ġio . github . ton ny l . l att ic ify . data . repository . User Pool Repository Ċ import Ġio . github . ton ny l . l att ic ify . e po xy . User Model _ Ċ import Ġio . github . ton ny l . l att ic ify . mvp . List Contract Ċ import Ġio . github . ton ny l . l att ic ify . mvp . List Presenter Ċ import Ġio . github . ton ny l . l att ic ify . ui . profile . Profile Activity Ċ import Ġio . github . ton ny l . l att ic ify . ui . profile . Profile Presenter Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠChannel Members Presenter ( ĊĠĠĠĠĠĠĠ Ġview : ĠList Contract . View , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Channel Id : ĠString Ċ ) Ġ: ĠList Presenter ( view ) Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġm Cursor : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġm Composite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ EXTRA _ CHANNEL _ ID Ġ= Ġ" KEY _ EXTRA _ CHANNEL _ ID " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunsubscribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Composite Disposable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View . set Loading Indicator ( true ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= ĠCon versations Repository . members ( m Channel Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Iterable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . response MetaData ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Cursor Ġ= Ġit . next Cursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . members Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Ġ{ ĠUser Pool Repository . getUser ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . set Loading Indicator ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show Data ( generate E po xy Models ( list )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Composite Disposable . add ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Data Of Next Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Cursor . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show Loading More ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= ĠCon versations Repository . members ( m Channel Id , Ġcursor Ġ= Ġm Cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Iterable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . response MetaData ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Cursor Ġ= Ġit . next Cursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . members Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Ġ{ ĠUser Pool Repository . getUser ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . set Loading Indicator ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show Data ( generate E po xy Models ( list )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Composite Disposable . add ( dis posable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate E po xy Models ( data List : ĠList < *> ): ĠCollection < E po xy Model <* >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata List . filter Ġ{ Ġit Ġis ĠUser Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Model _() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. user ( user Ġas ĠUser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. item OnClickListener Ġ{ Ġ_, Ġ_, Ġclicked View , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . goto Activity ( Intent ( clicked View . context , ĠProfile Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Profile Presenter . KEY _ EXTRA _ USER , Ġuser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }