package Ġcom . v ko ch enk ov . film sc atalog . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . v ko ch enk ov . film sc atalog . model . Local DataStore . current PageSize Ċ import Ġcom . v ko ch enk ov . film sc atalog . model . db . Film Ċ import Ġcom . v ko ch enk ov . film sc atalog . model . Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠFil ms ViewModel Ġ@ Inject Ġconstructor ( override Ġval Ġrepository : ĠRepository ) Ġ: ĠCommon ViewModel ( repository ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġmutable Fil ms LiveData Ġ= ĠMutable LiveData < List < Film >>() ĊĠĠĠ Ġprivate Ġvar Ġmutable Error LiveData Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġval Ġfil ms LiveData : ĠLive Data < List < Film >> Ġ= Ġmutable Fil ms LiveData ĊĠĠĠ Ġval Ġerror LiveData : ĠLive Data < String > Ġ= Ġmutable Error LiveData ĊĊĠĠĠ Ġfun Ġget Fil ms With Paging ( should Increment Page Count : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Increment Page Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent PageSize Ġ+= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Fil ms From Api () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Fil ms Without Paging () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent PageSize Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġget Fil ms From Api () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Fil ms From Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . get Fil ms From Api ( current PageSize , Ġobject Ġ: ĠRepository . Get Fil ms From Api Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( fil ms : ĠList < Film >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . save Fil ms To Db ( fil ms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Fil ms With Pagination ( current PageSize , Ġobject Ġ: ĠRepository . Get Fil ms From Database Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( fil ms : ĠList < Film >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fil ms LiveData . post Value ( fil ms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Error LiveData . value Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( str : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Fil ms With Pagination ( current PageSize , Ġobject Ġ: ĠRepository . Get Fil ms From Database Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( fil ms : ĠList < Film >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fil ms LiveData . post Value ( fil ms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Error LiveData . post Value ( str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }