package Ġcom . h ana 0 5 3 . micro post . shared . follow btn Ċ Ċ import Ġcom . h ana 0 5 3 . micro post . domain . User Ċ import Ġcom . h ana 0 5 3 . micro post . inter actor . Relationship Interactor Ċ import Ġcom . h ana 0 5 3 . micro post . service . Http ErrorHandler Ċ import Ġrx . Observable Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . functions . Action 1 Ċ import Ġrx . schedul ers . Schedulers ĊĊ Ċ class ĠFollow Btn Service ( ĊĠĠĠ Ġprivate Ġval Ġrelationship Interactor : ĠRelationship Interactor , ĊĠĠĠ Ġprivate Ġval Ġhttp ErrorHandler : ĠHttp ErrorHandler Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġhandle Follow Btn Click s ( view : ĠFollow Btn View ): ĠObservable < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobs Ġ= Ġif Ġ( view . is Follow State ()) Ġfollow ( view ) Ġelse Ġun follow ( view ) ĊĠĠĠĠĠĠĠ Ġreturn Ġobs . with Btn Disabled ( view . enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ Ġhttp ErrorHandler . handleError ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Resume Next Ġ{ ĠObservable . empty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġview . user Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfollow ( view : ĠFollow Btn View ) Ġ= ĊĠĠĠĠĠĠĠ Ġrelationship Interactor . follow ( view . user . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġview . to Un follow () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġun follow ( view : ĠFollow Btn View ) Ġ= ĊĠĠĠĠĠĠĠ Ġrelationship Interactor . un follow ( view . user . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġview . to Follow () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠObservable < T >. with Btn Disabled ( enabled : ĠAction 1 < in ĠBoolean >) Ġ= ĊĠĠĠĠĠĠĠ ĠObservable . using ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled . call ( false ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġthis Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenabled . call ( true ) ĊĠĠĠĠĠĠĠ Ġ}) Ċ }