package Ġcom . lo f tech s . sample . chat . settings Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġcom . google . android . material . switch material . Switch Material Ċ import Ġcom . lo f tech s . sample . R Ċ import Ġcom . lo f tech s . sample . Sample App Ċ import Ġcom . lo f tech s . sample . common . Intent Key Ċ import Ġcom . lo f tech s . sample . common . event . Chat Close Event Ċ import Ġcom . lo f tech s . sample . common . event . Chat Event Ċ 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 . extensions . remove Ċ 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 . api . Chat Settings Manager Ċ import Ġcom . lo f tech s . sample . model . data . Profile Info Entity Ċ import Ġcom . lo f tech s . sample . utils . File Util Ċ import Ġcom . lo f tech s . sdk . im . channels . LT Channel Type Ċ import Ġcom . lo f tech s . sdk . storage . LT FileInfo Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ Ċ class ĠChat Settings Presenter Ġ: ĠChat Settings Contract . Presenter < Chat Settings Contract . View > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm View : ĠChat Settings Contract . View ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Receiver ID : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Ch ID : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Subject : ĠString ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Channel Type : ĠLT Channel Type ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Org Mute State : ĠChat Settings Data ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Profile Entity : ĠProfile Info Entity ĊĠĠĠ Ġprivate Ġvar Ġm Default Drawable : ĠInt Ġ= ĠR . drawable . ic _ profile ĊĠĠĠ Ġprivate Ġvar Ġm Items : ĠArrayList < Chat Settings Data > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġval Ġm Disposable Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠComposite Disposable () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresume () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Data ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠ Ġrequest Profile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpause () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Disposable . clear () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Disposable . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind View ( view : ĠChat Settings Contract . View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Bundle ( arguments : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Receiver ID Ġ= Ġarguments . getString ( Intent Key . EXTRA _ RECE IVER _ ID , Ġ"") ĊĠĠĠĠĠĠĠ Ġm Ch ID Ġ= Ġarguments . getString ( Intent Key . EXTRA _ CHANNEL _ ID , Ġ"") ĊĠĠĠĠĠĠĠ Ġm Channel Type Ġ= Ġarguments . get Serializable ( Intent Key . EXTRA _ CHANNEL _ TYPE ) Ġas ĠLT Channel Type ĊĠĠĠĠĠĠĠ Ġm Subject Ġ= Ġarguments . getString ( Intent Key . EXTRA _ CHANNEL _ SUBJECT , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Data ( userID : ĠString , Ġch ID : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠChat Settings Manager . getChannel Info ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmute Ġchat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Org Mute State Ġ= ĠChat Settings Data ( ItemType . VIEW _ TYPE _ SWITCH , ĠSample App . context . getString ( R . string . chat _ setting _ mute ), Ġit . is Mute ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . add ( m Org Mute State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmember Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( can Edit Avatar Or Subject ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . add ( Chat Settings Data ( ItemType . VIEW _ TYPE _ TEXT , ĠSample App . context . getString ( R . string . chat _ setting _ member _ list ), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdismiss Ġchat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . add ( Chat Settings Data ( ItemType . VIEW _ TYPE _ TEXT _ RED , ĠSample App . context . getString ( R . string . chat _ setting _ dismiss ), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġleave Ġchat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items . add ( Chat Settings Data ( ItemType . VIEW _ TYPE _ TEXT _ RED , ĠSample App . context . getString ( R . string . chat _ setting _ leave ), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. refresh List ( m Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . chat _ setting _ get _ channel _ info _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Channel Subject ( subject : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠChat Settings Manager . set Channel Subject ( m Receiver ID , Ġm Ch ID , Ġsubject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. set Subject ( subject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . clean Profile Info ByID ( m Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Event Ġ= ĠChat Event ( m Receiver ID , Ġit . ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Event . subject Ġ= Ġsubject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( chat Event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . chat _ setting _ update _ subject _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Notify Mute ( mute : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠChat Settings Manager . set Channel Mute ( m Receiver ID , Ġm Ch ID , Ġmute ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Chat Event ( m Receiver ID , Ġit . ch ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Org Mute State . isOpen Ġ= Ġ! m Org Mute State . isOpen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Items [ 0 ] Ġ= Ġm Org Mute State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . chat _ setting _ set _ mute _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. refresh List ( m Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Action ( action : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. getString Value ( R . string . chat _ setting _ member _ list ) Ġ-> Ġm View ?. goto Member List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. getString Value ( R . string . chat _ setting _ dismiss ) Ġ-> Ġdismiss Channel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. getString Value ( R . string . chat _ setting _ leave ) Ġ-> Ġleave Channel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdismiss Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠChat Settings Manager . dismiss Channel ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . get Profile File ("$ m Ch ID . jpg ", Ġfalse ). remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . clean Profile Info ByID ( it . ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Chat Close Event ( m Receiver ID , Ġit . ch ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. finish Chat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . chat _ setting _ dismiss _ channel _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġleave Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠChat Settings Manager . leave Channel ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . get Profile File ("$ m Ch ID . jpg ", Ġfalse ). remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . clean Profile Info ByID ( it . ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Chat Close Event ( m Receiver ID , Ġit . ch ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. finish Chat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. dismiss Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . chat _ setting _ leave _ channel _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Profile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Observable Ġ= Ġif Ġ( m Channel Type Ġ== ĠLT Channel Type . SINGLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserID Ġ= ĠChat Flow Manager . getUser ID From One ToOne Channel ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . get Profile Info By UserID ( m Receiver ID , ĠuserID ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Default Drawable Ġ= ĠR . drawable . ic _ group _ profile ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . get Profile Info By Chat ID ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= Ġdisplay Observable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Profile Entity Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Subject Ġ= Ġit . displayName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. set Subject ( m Subject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Avatar ( it . profile FileInfo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug (" request Profile Ġ: Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error (" request Profile ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Avatar ( fileInfo : ĠLT FileInfo ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠAvatar Manager . load Avatar ( m Receiver ID , Ġfile Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load Avatar ( it , Ġm Default Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error (" bind Avatar ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load Avatar ( null , Ġm Default Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Avatar () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠChat Flow Manager . delete Channel Avatar ( m Receiver ID , Ġm Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . get Profile File ("$ m Ch ID . jpg ", Ġfalse ). remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . clean Profile Info ByID ( m Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug (" delete Avatar Ġsuccess .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Chat Event ( m Receiver ID , Ġit . ch ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load Avatar ( null , Ġm Default Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error (" delete Avatar ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġedit Avatar () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Profile Entity . profile FileInfo Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. pick Image () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Edit Avatar Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Profile Image ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġintent ?. data ?. let Ġ{ Ġuri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug (" set Profile Image Ġoriginal Uri Ġ: Ġ$ uri ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Avatar ( uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Avatar ( uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscribe Ġ= ĠAvatar Manager . upload Chat Avatar ( m Receiver ID , Ġm Ch ID , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Info Manager . clean Profile Info ByID ( m Ch ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug (" upload Avatar Ġsuccess .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Chat Event ( m Receiver ID , Ġit . ch ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. load Avatar ( uri , Ġm Default Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error (" upload Avatar ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Sn ackBar ( R . string . chat _ setting _ set _ channel _ profile _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Disposable . add ( subscribe ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Event MainThread ( event : ĠChat Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Debug (" Chat Event Ġ Ġ$ event ") ĊĠĠĠĠĠĠĠ Ġif Ġ( event . receiver ID Ġ!= Ġm Receiver ID Ġ|| Ġevent . ch ID Ġ!= Ġm Ch ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . BACKGROUND ) ĊĠĠĠ Ġfun Ġon Event Background Thread ( event : ĠChat Close Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Debug (" Chat Close Event Ġ Ġ$ event ") ĊĠĠĠĠĠĠĠ Ġif Ġ( event . receiver ID Ġ!= Ġm Receiver ID Ġ|| Ġevent . ch ID Ġ!= Ġm Ch ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm View ?. finish Chat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view : ĠChat Settings Adapter . I Item View , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchat Settings Data Ġ= Ġm Items [ position ] ĊĠĠĠĠĠĠĠ Ġview . setTitle Text ( chat Settings Data . title ) ĊĠĠĠĠĠĠĠ Ġif Ġ( chat Settings Data . item Type Ġ== ĠItem Type . VIEW _ TYPE _ SWITCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . switch View Visibility ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . switch View Is Checked ( chat Settings Data . isOpen ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . switch View Visibility ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( chat Settings Data . item Type Ġ== ĠItem Type . VIEW _ TYPE _ TEXT _ RED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTextColor ( R . color . color _ red ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chat Settings Data . title Ġ== ĠSample App . context . getString ( R . string . chat _ setting _ leave )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Resource ( R . drawable . ic _ exit _ group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTextColor ( R . color . chat _ setting _ text _ color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠChat Settings Adapter . I Item View , Ġdata : ĠChat Settings Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠSwitch Material ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Notify Mute (! data . isOpen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( data . item Type Ġ== ĠItem Type . VIEW _ TYPE _ SWITCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . switch View Is Checked (! data . isOpen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Notify Mute (! data . isOpen ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Action ( data . title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Edit Avatar Or Subject (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Channel Type Ġ!= ĠLT Channel Type . SINGLE ĊĠĠĠ Ġ} Ċ }