package Ġcom . air bnb . mv rx . sample . features . dad jo ke Ċ Ċ import Ġcom . air bnb . mv rx .* Ċ import Ġcom . air bnb . mv rx . sample . core . Mv Rx ViewModel Ċ import Ġcom . air bnb . mv rx . sample . models . Jo ke Ċ import Ġcom . air bnb . mv rx . sample . models . J okes Response Ċ import Ġcom . air bnb . mv rx . sample . network . D ad Jo ke Service Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ private Ġconst Ġval ĠJ OK ES _ PER _ PAGE Ġ= Ġ 5 Ċ Ċ data Ġclass ĠD ad Jo ke Index State ( ĊĠĠĠĠĠĠĠ Ġ/** ĠWe Ġuse Ġthis Ġrequest Ġto Ġstore Ġthe Ġlist Ġof Ġall Ġj okes Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġj okes : ĠList < Jo ke > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġ/** ĠWe Ġuse Ġthis ĠAsync Ġto Ġkeep Ġtrack Ġof Ġthe Ġstate Ġof Ġthe Ġcurrent Ġnetwork Ġrequest Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġrequest : ĠAsync < J okes Response > Ġ= ĠUn initialized Ċ ) Ġ: ĠM v Rx State Ċ Ċ /** Ċ Ġ* ĠinitialState Ġ* must * Ġbe Ġimplemented Ġas Ġa Ġconstructor Ġparameter . Ċ Ġ*/ Ċ class ĠD ad Jo ke Index ViewModel ( ĊĠĠĠĠĠĠĠ ĠinitialState : ĠD ad Jo ke Index State , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġd ad Jo ke Service : ĠD ad Jo ke Service Ċ ) Ġ: ĠM v Rx ViewModel < D ad Jo ke Index State >( initialState ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch Next Page () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Next Page () Ġ= Ġwith State Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( state . request Ġis ĠLoading ) Ġreturn @ with State ĊĊĠĠĠĠĠĠĠ Ġd ad Jo ke Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. search ( page Ġ= Ġstate . j okes . size Ġ/ ĠJ OK ES _ PER _ PAGE Ġ+ Ġ 1 , Ġlimit Ġ= ĠJ OK ES _ PER _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute Ġ{ Ġcopy ( request Ġ= Ġit , Ġj okes Ġ= Ġj okes Ġ+ Ġ( it ()?. results Ġ?: Ġempty List ())) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġimplement ĠM v Rx ViewModel Factory Ġin Ġyour Ġcompanion Ġobject , ĠM v Rx Ġwill Ġuse Ġthat Ġto Ġcreate ĊĠĠĠĠ Ġ* Ġyour ĠViewModel . ĠYou Ġcan Ġuse Ġthis Ġto Ġachieve Ġconstructor Ġdependency Ġinjection Ġwith ĠM v Rx . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠM v Rx ViewModel Factory ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠM v Rx ViewModel Factory < D ad Jo ke Index ViewModel , ĠD ad Jo ke Index State > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( viewModel Context : ĠViewModel Context , Ġstate : ĠD ad Jo ke Index State ): ĠD ad Jo ke Index ViewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice : ĠD ad Jo ke Service Ġby ĠviewModel Context . activity . inject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠD ad Jo ke Index ViewModel ( state , Ġservice ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ