/* Ċ Ġ* ĠCreated Ġby ĠWe i yi ĠLi Ġon Ġ 2 0 2 0 - 0 4 - 2 0 . Ċ Ġ* Ġhttps :// github . com / li 2 Ċ Ġ*/ Ċ package Ġme . li 2 . movies . data . model Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ import Ġme . li 2 . android . common . arch . Resource Ċ import Ġme . li 2 . android . common . logic . or False Ċ import Ġme . li 2 . movies . data . remote . T mdb Api Ċ import Ġorg . th reet en . bp . LocalDate Ċ Ċ @ Parcel ize Ċ data Ġclass ĠMovie Item Paging UI ( ĊĠĠĠĠĠĠĠ Ġval Ġresults : ĠMutable List < Movie Item UI >, ĊĠĠĠĠĠĠĠ Ġval Ġpage : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġtotal Pages : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġtotal Results : ĠInt Ċ ) Ġ: ĠParcel able Ċ Ċ @ Parcel ize Ċ data Ġclass ĠMovie Item UI ( ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġrelease Date : ĠLocalDate ?, ĊĠĠĠĠĠĠĠ Ġval Ġrelease Date Display : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġposter Url : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġposter Original Url : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġback drop Url : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġpop ularity : ĠDouble , ĊĠĠĠĠĠĠĠ Ġval Ġvote Average : ĠDouble , ĊĠĠĠĠĠĠĠ Ġval Ġvote Average Display : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġvote Count : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġvote Count Display : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġoverview : ĠString Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġfun Ġget Shared Transition Name () Ġ= Ġ"$ title :$ id " Ċ } Ċ Ċ fun ĠMutable LiveData < Resource < Movie Item Paging UI >> . next Page (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġthis . value ?. data ?. let Ġ{ Ġit . page Ġ+ Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠT mdb Api . TM DB _ START ING _ PAGE _ INDEX Ċ } Ċ Ċ fun ĠMutable LiveData < Resource < Movie Item Paging UI >> . is First Page (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis . value ?. data ?. let Ġ{ Ġit . page Ġ== ĠT mdb Api . TM DB _ START ING _ PAGE _ INDEX Ġ}. or False () Ċ } Ċ Ċ fun ĠMutable LiveData < Resource < Movie Item Paging UI >> . is Last Page (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis . value ?. data ?. let Ġ{ Ġit . page Ġ== Ġit . total Pages Ġ}. or False () Ċ } Ċ Ċ fun ĠList < Movie Item UI >. append Next Page ( next Page : ĠList < Movie Item UI >): ĠList < Movie Item UI > Ġ{ ĊĠĠĠ Ġreturn Ġthis . to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . addAll ( next Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġduplicated Ġitems , Ġ 2 1 note ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . distinct By Ġ{ Ġmovie Ġ-> Ġmovie . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ