package Ġcom . gen ius for app . ny times . presentation . main . vm Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . gen ius for app . ny times . presentation . main . domain . use cases . Get Articles UseCase Ċ import Ġcom . gen ius for app . ny times . shared . data . remote . models . Article Ċ import Ġcom . gen ius for app . ny times . shared . data . remote . models . Result Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ name Ġny times Ċ Ġ* ĠCopyright s Ġ( c ) Ġ 2 0 1 9 - 0 6 - 1 0 ĠCreated ĠBy ĠA hm ad ĠN ajar Ċ Ġ**/ Ċ class ĠMain ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable : ĠComposite Disposable , ĊĠĠĠ Ġprivate Ġval Ġget Articles UseCase : ĠGet Articles UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġarticles LiveData : ĠMutable LiveData < Result >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġquery : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġfilter Value Ġ= Ġ" 1 " ĊĊĠĠĠ Ġfun Ġget Articles (): ĠLive Data < Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( articles LiveData Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarticles LiveData Ġas ĠLive Data < Result > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMutable LiveData < Result >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Article From Api ( filter Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticles LiveData Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun ĠMutable LiveData < Result >. get Article From Api ( time Long : ĠString ): ĠMutable LiveData < Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Value ( Result . Loading ) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( get Articles UseCase . get Articles ( time Long ). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġpost Value ( Result . Error ( it )) Ġ})) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Query (): ĠString ? Ġ= Ġquery ĊĊĠĠĠ Ġfun Ġrefresh ( number : ĠString , Ġforce Refresh : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! force Refresh ) Ġif Ġ( filter Value Ġ== Ġnumber ) Ġreturn ĊĠĠĠĠĠĠĠ Ġfilter Value Ġ= Ġnumber ĊĠĠĠĠĠĠĠ Ġarticles LiveData ?. post Value ( Result . Success ( array ListOf < Article > ())) ĊĠĠĠĠĠĠĠ Ġarticles LiveData ?. get Article From Api ( number ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh ( filter Value , Ġtrue ) ĊĠĠĠ Ġ} Ċ } ĊĊĊ