package Ġinfo . hz v tc . hip ix iv . vm . fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . design . widget . Bottom Sheet Behavior Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . like . Like Button Ċ import Ġinfo . hz v tc . hip ix iv . R Ċ import Ġinfo . hz v tc . hip ix iv . adapter . Content Ill ust Adapter Ċ import Ġinfo . hz v tc . hip ix iv . adapter . Ranking Type Ċ import Ġinfo . hz v tc . hip ix iv . adapter . events .* Ċ import Ġinfo . hz v tc . hip ix iv . data . Account Ċ import Ġinfo . hz v tc . hip ix iv . data . User Preferences Ċ import Ġinfo . hz v tc . hip ix iv . databinding . Fragment Content Ill ust Binding Ċ import Ġinfo . hz v tc . hip ix iv . net . ApiService Ċ import Ġinfo . hz v tc . hip ix iv . pojo . ill ust . Ill ust Ċ import Ġinfo . hz v tc . hip ix iv . util . App Util Ċ import Ġinfo . hz v tc . hip ix iv . view . fragment . Base Fragment Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠContent Ill ust ViewModel Ġ@ Inject Ġconstructor ( val Ġaccount : ĠAccount , Ġval Ġapi Service : ĠApi Service , Ġprivate Ġval Ġuser Preferences : ĠUser Preferences , Ġval Ġgson : ĠGson ) ĊĠĠĠ Ġ: ĠBase Fragment ViewModel < Base Fragment < Fragment Content Ill ust Binding >, ĠFragment Content Ill ust Binding > (){ ĊĊĠĠĠ Ġlateinit Ġvar Ġill ust Ġ: ĠIll ust ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmeta Adapter Ġ: ĠContent Ill ust Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontent Adapter Ġ: ĠContent Ill ust Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġallow Load More Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Book marked Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġrun View () Ġ{ ĊĠĠĠĠĠĠĠ ĠObservable . just ( user Preferences . is Prem ium ?: false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter { Ġprem ium Ġ-> Ġprem ium } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġaccount . obs Token ( getContext ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġtoken Ġ-> Ġapi Service . post Add Ill ust B rowsing History ( token , getId List ( ill ust . pix iv Id )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĠLog . d (" Error ", error . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġget Related () ĊĠĠĠĠĠĠĠ Ġget Comments () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġmeta Adapter Ġ= ĠContent Ill ust Adapter ( getContext (), ĠContent Ill ust Adapter . Type . META ) ĊĠĠĠĠĠĠĠ Ġcontent Adapter Ġ= ĠContent Ill ust Adapter ( getContext (), ĠContent Ill ust Adapter . Type . INFO ) ĊĊĠĠĠĠĠĠĠ Ġval Ġres Id Ġ= Ġif Ġ( ill ust . is Book marked ) ĠR . drawable . favorite _ on Ġelse ĠR . drawable . favorite _ off ĊĠĠĠĠĠĠĠ Ġis Book marked Ġ= Ġill ust . is Book marked ĊĠĠĠĠĠĠĠ Ġm Bind . fab Like . setImage Resource ( res Id ) ĊĠĠĠĠĠĠĠ Ġm Bind . fab Like . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Fab Like Or Un like ( ill ust . pix iv Id , ! is Book marked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Bind . image Recycler . layout Manager Ġ= ĠLinearLayoutManager ( getContext ()) ĊĠĠĠĠĠĠĠ Ġm Bind . image Recycler . adapter Ġ= Ġmeta Adapter ĊĠĠĠĠĠĠĠ Ġmeta Adapter . set New Data ( ill ust ) ĊĠĠĠĠĠĠĠ Ġmeta Adapter . setImage Click ( object Ġ: ĠImage Click { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġimage Click ( position : ĠInt , Ġurls List : ĠArrayList < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( getString ( R . string . activity _ image )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( getString ( R . string . extra _ int ), position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putString ArrayList Extra ( getString ( R . string . extra _ list ), urls List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . startActivity ( getContext (), Ġintent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm Bind . bottom Recycler . layout Manager Ġ= ĠLinearLayoutManager ( getContext ()) ĊĠĠĠĠĠĠĠ Ġm Bind . bottom Recycler . adapter Ġ= Ġcontent Adapter ĊĠĠĠĠĠĠĠ Ġval Ġbehavior Ġ= ĠBottom Sheet Behavior . from ( m Bind . bottom Recycler ) ĊĠĠĠĠĠĠĠ Ġbehavior . set Bottom Sheet Callback ( object Ġ: ĠBottom Sheet Behavior . Bottom Sheet Callback (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bind . fab Like . translation Y Ġ= Ġslide Offset Ġ* Ġ( m Bind . fab Like . height Ġ* Ġ 2 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Bind . bottom Recycler . add On Scroll Listener ( object Ġ: ĠOn Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bottom () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( allow Load More ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget More Comments () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcontent Adapter . set New Data ( ill ust ) ĊĊĠĠĠĠĠĠĠ Ġcontent Adapter . set Url Click ( object Ġ: ĠUrl Click { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclick ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . startActivity ( m View . activity , Ġintent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcontent Adapter . setTag Click ( object Ġ: ĠTag Item Click { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġitem Click ( position : ĠInt , Ġtag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( m View . getString ( R . string . activity _ search )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( getString ( R . string . extra _ search _ tag ), tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . startActivity ( m View . context , Ġintent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcontent Adapter . setUser Follow ( object Ġ: ĠItem Like { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlike ( id : ĠInt , Ġitem Index : ĠInt , Ġis Rank : ĠBoolean , Ġlike Button : ĠLike Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Follow Or Un follow ( id , true , like Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġun like ( id : ĠInt , Ġitem Index : ĠInt , Ġis Rank : ĠBoolean , Ġlike Button : ĠLike Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Follow Or Un follow ( id , false , like Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcontent Adapter . set Related Item Like ( object Ġ: ĠItem Like { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlike ( id : ĠInt , Ġitem Index : ĠInt , Ġis Rank : ĠBoolean , Ġlike Button : ĠLike Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Like Or Un like ( id , item Index , true , like Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġun like ( id : ĠInt , Ġitem Index : ĠInt , Ġis Rank : ĠBoolean , Ġlike Button : ĠLike Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Like Or Un like ( id , item Index , false , like Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcontent Adapter . set Related Item Click ( object Ġ: ĠItem Click { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġitem Click ( ill ust : ĠIll ust ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( m View . getString ( R . string . activity _ content )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( m View . getString ( R . string . extra _ json ), gson . toJson ( ill ust )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( getString ( R . string . extra _ type ), m View . getString ( R . string . extra _ type _ ill ust )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . startActivity ( m View . context , Ġintent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcontent Adapter . set Related Top Click ( object Ġ: ĠRank ing Top Click { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġitem Click ( type : ĠRank ing Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( getString ( R . string . activity _ related )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( getString ( R . string . extra _ int ), ill ust . pix iv Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . startActivity ( m View . context , Ġintent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm Bind . bottom Recycler . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Bind . image Recycler . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Bind . fab Like . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġm Bind . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Comments (){ ĊĠĠĠĠĠĠĠ Ġaccount . obs Token ( m View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġtoken Ġ-> Ġapi Service . get Ill ust Comments ( token , ill ust . pix iv Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġcomment Response Ġ-> Ġcontent Adapter . set New Comment ( comment Response )} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Comments () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĠLog . e (" Error ", error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . set No Comments () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Load More Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget More Comments (){ ĊĠĠĠĠĠĠĠ ĠObservable . just ( content Adapter . next Url ? :" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next ({ Ġallow Load More Ġ= Ġfalse Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ({ Ġurl Ġ-> Ġ! url . isNull OrEmpty () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next ({ Ġcontent Adapter . set Progress ( true ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġaccount . obs Token ( m View . context ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġtoken Ġ-> Ġapi Service . get Comments Next ( token , content Adapter . next Url ? :" ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġcontent Adapter . set Progress ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġcomment Response Ġ-> Ġcontent Adapter . add More Comment ( comment Response ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Comments () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . set Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Load More Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Error ", error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Load More Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Related (){ ĊĠĠĠĠĠĠĠ Ġaccount . obs Token ( m View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġtoken Ġ-> Ġapi Service . get Ill ust Recommended ( token , ill ust . pix iv Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( content ) Ġ-> Ġcontent Adapter . set New Related ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĠLog . e (" Error ", error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost Follow Or Un follow ( userId Ġ: ĠInt , is Like Ġ: ĠBoolean , like Button : ĠLike Button ){ ĊĠĠĠĠĠĠĠ Ġaccount . obs Token ( getContext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ({ ĠApp Util . is Network Connected ( getContext ()) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Like ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġapi Service . post Follow User ( token , userId ," public ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġapi Service . post Un follow User ( token , userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Follow ed ( is Like ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĠLog . e (" Error ", error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Follow ed ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlike Button . is Lik ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! App Util . is Network Connected ( getContext ())){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Follow ed ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlike Button . is Lik ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost Fab Like Or Un like ( ill ust Id Ġ: ĠInt , is Like Ġ: ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġaccount . obs Token ( m View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ({ ĠApp Util . is Network Connected ( m View . context ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Like ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġapi Service . post Like Ill ust ( token , ill ust Id ," public ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġapi Service . post Un like Ill ust ( token , ill ust Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Id Ġ= Ġif Ġ( is Like ) ĠR . drawable . favorite _ on Ġelse ĠR . drawable . favorite _ off ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Book marked Ġ= Ġis Like ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bind . fab Like . setImage Resource ( res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĠLog . e (" Error ", error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Book marked Ġ= Ġ! is Like ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! App Util . is Network Connected ( m View . context )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Book marked Ġ= Ġ! is Like ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost Like Or Un like ( ill ust Id Ġ: ĠInt , position Ġ: ĠInt , is Like Ġ: ĠBoolean , like Button : ĠLike Button ){ ĊĠĠĠĠĠĠĠ Ġaccount . obs Token ( m View . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ({ ĠApp Util . is Network Connected ( m View . context ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Like ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġapi Service . post Like Ill ust ( token , ill ust Id ," public ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Ġapi Service . post Un like Ill ust ( token , ill ust Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Related Like ( position , is Like ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> ĠLog . e (" Error ", error . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Related Like ( position , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlike Button . is Lik ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ},{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! App Util . is Network Connected ( m View . context )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Adapter . update Related Like ( position , false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlike Button . is Lik ed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetId List ( ill ust Id Ġ: ĠInt ) Ġ: ĠList < Int >{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġlist . add ( ill ust Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} Ċ } Ċ