package Ġru . mer k ul ye vs ash a . article comments . presentation čĊč Ċ import Ġandroidx . lifecycle . Mutable LiveData č Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers č Ċ import Ġru . mer k ul ye vs ash a . article comments . R č Ċ import Ġru . mer k ul ye vs ash a . core . Article Distribut or č Ċ import Ġru . mer k ul ye vs ash a . core . Resource Provider č Ċ import Ġru . mer k ul ye vs ash a . core . domain . Article Comments Interactor č Ċ import Ġru . mer k ul ye vs ash a . core . domain . Articles Interactor č Ċ import Ġru . mer k ul ye vs ash a . core . models . Article č Ċ import Ġru . mer k ul ye vs ash a . core . models . Article Comment č Ċ import Ġru . mer k ul ye vs ash a . core . models . Article Or Comment č Ċ import Ġru . mer k ul ye vs ash a . core android . base . Base ViewModel č Ċ import Ġru . mer k ul ye vs ash a . core android . common . news adapter . Article Comment Like Callback Click Handler č Ċ import Ġru . mer k ul ye vs ash a . core android . common . news adapter . Article Comment Share Callback Click Handler č Ċ import Ġru . mer k ul ye vs ash a . core android . common . news adapter . Article Like Callback Click Handler č Ċ import Ġru . mer k ul ye vs ash a . core android . common . news adapter . Article Share Callback Click Handler č Ċ import Ġru . mer k ul ye vs ash a . core android . presentation . Article Like Click Handler č Ċ import Ġjavax . inject . Inject čĊč Ċ class ĠArticle Comments ViewModel Ġ@ Inject Ġconstructor ( čĊĠĠĠ Ġprivate Ġval Ġresource Provider : ĠResource Provider , čĊĠĠĠ Ġprivate Ġval Ġarticle Comments Interactor : ĠArticle Comments Interactor , čĊĠĠĠ Ġarticles Interactor : ĠArticles Interactor , čĊĠĠĠ Ġprivate Ġval Ġnews Distribut or : ĠArticle Distribut or č Ċ ) Ġ: ĠBase ViewModel (), čĊĠĠĠ ĠArticle Like Callback Click Handler , ĠArticle Share Callback Click Handler , čĊĠĠĠ ĠArticle Comment Like Callback Click Handler , ĠArticle Comment Share Callback Click Handler Ġ{ čĊčĊĠĠĠ Ġval Ġarticle Ġ= ĠMutable LiveData < Article >() čĊĠĠĠ Ġval Ġupdate Article Comment Ġ= ĠMutable LiveData < Article Comment >() čĊĠĠĠ Ġval Ġitems Ġ= ĠMutable LiveData < List < Article Or Comment >>() čĊčĊĠĠĠ Ġprivate Ġval Ġarticle Like Click Handler Ġ= ĠArticle Like Click Handler ( articles Interactor , čĊĠĠĠĠĠĠĠ Ġ{ Ġarticle . post Value ( it ) Ġ}, čĊĠĠĠĠĠĠĠ Ġ{ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) Ġ}) čĊčĊĠĠĠ Ġfun Ġon First Load ( article Id : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Comments Interactor . get Article Comments ( article Id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġprogress . post Value ( true ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġprogress . post Value ( false ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠlistOf < Article Or Comment >( it . first ) Ġ+ Ġit . second čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . post Value ( result ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġon Refresh ( article Id : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Comments Interactor . refresh AndGet Article Comments ( article Id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġprogress . post Value ( true ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġprogress . post Value ( false ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠlistOf < Article Or Comment >( it . first ) Ġ+ Ġit . second čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . post Value ( result ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġon Add Comment Clicked ( article Id : ĠInt , Ġcomment : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( comment . isEmpty ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Comments Interactor . add Article Comment ( article Id , Ġcomment ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġprogress . post Value ( true ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġprogress . post Value ( false ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Article Comment . post Value ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Article Like Clicked ( item : ĠArticle ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( article Like Click Handler . on Article Like Clicked ( item . article Id )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Article Dis like Clicked ( item : ĠArticle ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( article Like Click Handler . on Article Dis like Clicked ( item . article Id )) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Article Share Clicked ( item : ĠArticle ) Ġ{ čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Article Comment Like Clicked ( item : ĠArticle Comment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Comments Interactor . like Article Comment ( item . comment Id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġprogress . post Value ( true ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġprogress . post Value ( false ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Article Comment . post Value ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Article Comment Dis like Clicked ( item : ĠArticle Comment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle Comments Interactor . dis like Article Comment ( item . comment Id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġprogress . post Value ( true ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do After Terminate Ġ{ Ġprogress . post Value ( false ) Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Article Comment . post Value ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . post Value ( resource Provider . getString ( R . string . comment _ loading _ error _ message )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Article Comment Share Clicked ( item : ĠArticle Comment ) Ġ{ čĊĠĠĠĠĠĠĠ Ġnews Distribut or . distribute ( item ) čĊĠĠĠ Ġ} čĊč Ċ }