/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġapp . t ivi . inter actors Ċ Ċ import Ġandroidx . paging . DataSource Ċ import Ġapp . t ivi . data . repositories . trend ing shows . Trend ing Shows Repository Ċ import Ġapp . t ivi . data . result entities . Trend ing Entry With Show Ċ import Ġapp . t ivi . extensions . empty Flow able List Ċ import Ġapp . t ivi . inter actors . Update Trend ing Shows . Execute Params Ċ import Ġapp . t ivi . util . App Coroutine Dispatch ers Ċ import Ġapp . t ivi . util . App Rx Schedulers Ċ import Ġio . reactivex . Flow able Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠUpdate Trend ing Shows Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġdispatch ers : ĠApp Coroutine Dispatch ers , ĊĠĠĠ Ġprivate Ġval Ġs chedulers : ĠApp Rx Schedulers , ĊĠĠĠ Ġprivate Ġval Ġtrend ing Shows Repository : ĠT rend ing Shows Repository Ċ ) Ġ: ĠP aging Interactor < Trend ing Entry With Show >, ĠSubject Interactor < Unit , ĠExecute Params , ĠList < Trend ing Entry With Show >>() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdispatcher : ĠCor outine Dispatcher Ġ= Ġdispatch ers . io ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġdon 't Ġhave Ġparams , Ġso Ġlets Ġset ĠUnit Ġto Ġkick Ġoff Ġthe Ġobservable ĊĠĠĠĠĠĠĠ Ġset Params ( Unit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠdataSource Factory (): ĠDataSource . Factory < Int , ĠT rend ing Entry With Show > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrend ing Shows Repository . observe For Paging () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Observable ( params : ĠUnit ): ĠFlow able < List < Trend ing Entry With Show >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrend ing Shows Repository . observe For Flow able () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start With ( empty Flow able List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( schedul ers . io ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( params : ĠUnit , Ġexecute Params : ĠExecute Params ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( execute Params . page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage . NEXT _ PAGE Ġ-> Ġtrend ing Shows Repository . load Next Page () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage . REFRESH Ġ-> Ġtrend ing Shows Repository . refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠExecute Params ( val Ġpage : ĠPage ) ĊĊĠĠĠ Ġenum Ġclass ĠPage Ġ{ ĊĠĠĠĠĠĠĠ ĠNEXT _ PAGE , ĠREF RESH ĊĠĠĠ Ġ} Ċ } Ċ