package Ġcom . die go fer re ir aca et ano . github . ui . repo Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . paging . Live Paged List Builder Ċ import Ġandroidx . paging . Paged List Ċ import Ġcom . die go fer re ir aca et ano . domain . Constants Ċ import Ġcom . die go fer re ir aca et ano . domain . repo . Repo Ċ import Ġcom . die go fer re ir aca et ano . domain . repo . inter actor . Callback Repo Interactor Ċ import Ġcom . die go fer re ir aca et ano . domain . repo . inter actor . Get List Repo Interactor Ċ Ċ class ĠRepo ViewModel ( private Ġval Ġget Repo Interactor : ĠGet List Repo Interactor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : ĠCallback Repo Interactor ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġitem Selected Ġ= ĠMutable LiveData < Repo >() ĊĠĠĠ Ġval Ġresult Ġ: ĠLive Data < Paged List < Repo >> ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠP aged List . Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PageSize ( Constants . PAGE _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInitial Load Size Hint ( Constants . PAGE _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Enable Place holders ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġresult Ġ= ĠLive Paged List Builder < Int , ĠRepo >( get Repo Interactor . execute (), Ġconfig ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Boundary Callback ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġretry () Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . retry () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Item ( repo : ĠRepo ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Selected . value Ġ= Ġrepo ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Zero Items Loaded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnetwork State Ġ= ĠTransform ations . switch Map ( result ,{ callback . network State }) ĊĠĠĠ Ġval Ġinitial Load Ġ= Ġ ĠTransform ations . switch Map ( result ,{ callback . initial Load }) ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcallback . clear () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ