package Ġfi . tom y . sal min en . double helix . feature . article list Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . LiveData Reactive Streams Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġfi . tom y . sal min en . double helix . app . Double Hel ix Application Ċ import Ġfi . tom y . sal min en . double helix . view model . Base Context ViewModel Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠArticle List Fragment ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġapp : ĠDouble Hel ix Application , ĊĠĠĠ Ġ@ For Article List Ġprivate Ġval Ġrequest Refresh : ĠComp letable , ĊĠĠĠ Ġ@ For Article List Ġarticles Source : ĠFlow able < List < Article ListItem ViewModel >> Ċ ) Ġ: ĠBase Context ViewModel ( app ) Ġ{ ĊĠĠĠ Ġvar Ġrequest Refresh Subscription : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġmutable Is Loading : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData ( false ) ĊĠĠĠ Ġval ĠisLoading : ĠLive Data < Boolean > Ġget () Ġ= Ġmutable Is Loading ĊĠĠĠ Ġval Ġarticles Ġ= ĠLive Data Reactive Streams . from Publisher ( articles Source ) ĊĊĠĠĠ Ġfun Ġon Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Refresh Subscription . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Disposed ) Ġit . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Refresh Subscription Ġ= Ġrequest Refresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġmutable Is Loading . post Value ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġmutable Is Loading . post Value ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }