package Ġcom . must afa . movie guide app . view . ui . movies . mov iel ist Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . must afa . movie guide app . models . Resource Ċ import Ġcom . must afa . movie guide app . models . entity . Movie Ċ import Ġcom . must afa . movie guide app . repository . Discover Repository Ċ import Ġcom . must afa . movie guide app . testing . Open ForTesting Ċ import Ġcom . must afa . movie guide app . utils . Absent LiveData Ċ import Ġcom . must afa . movie guide app . view . ui . common . App Executors Ċ import Ġjavax . inject . Inject Ċ Ċ @ Open ForTesting Ċ class ĠMovie List ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġdiscover Repository : ĠDis cover Repository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpage Number Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval Ġmovie Page LiveData : ĠMutable LiveData < Int > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġapp Executors : ĠApp Executors ĊĊĠĠĠ Ġval Ġmovie List LiveData : ĠLive Data < Resource < List < Movie >>> Ġ= ĠTransform ations ĊĠĠĠĠĠĠĠ Ġ. switch Map ( movie Page LiveData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAbs ent LiveData . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscover Repository . load Movies ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie Page LiveData . value Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Movie Page ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie Page LiveData . value Ġ= Ġpage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload More () Ġ{ ĊĠĠĠĠĠĠĠ Ġpage Number ++ ĊĠĠĠĠĠĠĠ Ġmovie Page LiveData . value Ġ= Ġpage Number ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie Page LiveData . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Page LiveData . value Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ