package Ġcom . lo f tech s . sample . common . picker Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġcom . lo f tech s . sample . R Ċ import Ġcom . lo f tech s . sample . common . Intent Key Ċ import Ġcom . lo f tech s . sample . extensions . log Debug Ċ import Ġcom . lo f tech s . sample . extensions . log Error Ċ import Ġcom . lo f tech s . sample . model . Avatar Manager Ċ import Ġcom . lo f tech s . sample . model . Profile Info Manager Ċ import Ġcom . lo f tech s . sample . model . api . Chat Flow Manager Ċ import Ġcom . lo f tech s . sample . model . data . Profile Info Entity Ċ import Ġcom . lo f tech s . sdk . im . channels . LT Channel Type Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ class ĠP icker Presenter Ġ: ĠP icker Contract . Presenter < Picker Contract . View > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm View : ĠP icker Contract . View ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Receiver ID : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm UserInfo List : ĠArrayList < Profile Info Entity > ĊĠĠĠ Ġprivate Ġval Ġm Selected List : ĠArrayList < Profile Info Entity > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠArrayList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Disposable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠComposite Disposable () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresume () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View ?. refresh List ( m UserInfo List ) ĊĠĠĠĠĠĠĠ Ġm Selected List . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpause () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Disposable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Disposable . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind View ( view : ĠP icker Contract . View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view : ĠP icker Adapter . IP icker Item View , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= Ġm UserInfo List [ position ] ĊĠĠĠĠĠĠĠ Ġview . setTitle Text ( profile . displayName ) ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠAvatar Manager . load Avatar ( m Receiver ID , Ġprofile . profile FileInfo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . bind Avatar ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error (" on Bind ViewHolder ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . bind Avatar ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Bundle ( arguments : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Receiver ID Ġ= Ġarguments . getString ( Intent Key . EXTRA _ RECE IVER _ ID , Ġ"") ĊĠĠĠĠĠĠĠ Ġm UserInfo List Ġ= Ġarguments . get Serializable ( Intent Key . EXTRA _ USER _ INFO _ LIST ) Ġas ĠArrayList < Profile Info Entity >? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat Flow Manager . query Channel ListBy Channel Type ( m Receiver ID , ĠlistOf ( LT Channel Type . SINGLE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug (" init Bundle Ġm UserInfo List Ġ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. concat Map Iterable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserID Ġ= ĠChat Flow Manager . getUser ID From One ToOne Channel ( m Receiver ID , Ġit . ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . get Profile Info By UserID ( m Receiver ID , ĠuserID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList (). to Observable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrayList ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. blocking First () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġarguments . remove ( Intent Key . EXTRA _ USER _ INFO _ LIST ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Create Group () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Selected List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . picker _ selected _ list _ is _ empty ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm View ?. goto Create Group Page ( m Selected List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġoperate Check ( position : ĠInt , Ġis Checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserInfo Entity Ġ= Ġm UserInfo List [ position ] ĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Selected List . add ( userInfo Entity ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Selected List . remove ( userInfo Entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ