package Ġcom . ky aw hut . ats y cast . msys . ui . genres Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġcom . ky aw hut . ats y cast . msys . data . network . response . Movies Response Ċ import Ġcom . ky aw hut . ats y cast . msys . utils . Constants Ċ import Ġcom . ky aw hut . ats y cast . share . base . Base ViewModel Ċ import Ġcom . ky aw hut . ats y cast . share . network . utils . Network Response Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author Ġk yaw ht ut Ċ Ġ* Ġ@ date Ġ 9 / 1 0 / 2 1 Ċ Ġ*/ Ċ @ H ilt ViewModel Ċ internal Ġclass ĠMov ies ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication , ĊĠĠĠ Ġprivate Ġval Ġsaved State Handle : ĠSaved State Handle , ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠMov ies Repository Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpage : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġval Ġis First Page : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpage Ġ== Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠisLoading : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Has More Data : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġval ĠapiKey : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġsaved State Handle . get ( Constants . EXTRA _ API _ KEY ) Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠappName : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġsaved State Handle . get ( Constants . EXTRA _ APP _ NAME ) Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġchannel Logo : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġsaved State Handle . get ( Constants . EXTRA _ CHANNEL _ LOG O ) Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġgen res ID : ĠInt Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġsaved State Handle . get ( Constants . EXTRA _ PAGE _ KEY ) Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Movies ( callback : Ġ( Network Response < List < Movies Response >>) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading Ġ|| Ġ! is Has More Data ) Ġreturn ĊĠĠĠĠĠĠĠ ĠviewModel Scope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Movies ( application , Ġgen res ID , ĠapiKey , Ġpage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġit . isLoading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Has More Data Ġ= Ġ( it . data Ġ?: ĠlistOf ()). isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Has More Data ) Ġpage Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ