package Ġcom . most afa . sh utter search . search . data . repository Ċ Ċ import Ġandroid . n fc . tech . M if are U ltr al ight . PAGE _ SIZE Ċ import Ġandroidx . paging . Live Paged List Builder Ċ import Ġcom . most afa . sh utter search . search . data . local . Images Local Cache Ċ import Ġcom . most afa . sh utter search . search . data . remote . Images Service Ċ import Ġcom . most afa . sh utter search . search . model . App SearchResult Ċ Ċ class ĠSearch Repository Impl ( ĊĠĠĠ Ġprivate Ġval Ġapi Service : ĠImages Service , ĊĠĠĠ Ġprivate Ġval Ġimages Local Cache : ĠImages Local Cache Ċ ) Ġ: ĠSearch Repository Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġboundary Callback : ĠPage List Image Boundary Callback ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSearch Ġimages Ġwhose Ġnames Ġmatch Ġthe Ġquery . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsearch ( query : ĠString ): ĠApp SearchResult Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġdata Ġsource Ġfactory Ġfrom Ġthe Ġlocal Ġcache ĊĠĠĠĠĠĠĠ Ġval ĠdataSource Factory Ġ= Ġimages Local Cache . get Images ( query ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠConstruct Ġthe Ġboundary Ġcallback ĊĠĠĠĠĠĠĠ Ġboundary Callback Ġ= ĠPage List Image Boundary Callback ( query , Ġapi Service , Ġimages Local Cache ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġnetwork Ġerrors Ġexposed Ġby Ġthe Ġboundary Ġcallback ĊĠĠĠĠĠĠĠ Ġval Ġnetwork Errors Ġ= Ġboundary Callback . network Errors ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġpage d Ġlist ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠLive Paged List Builder ( dataSource Factory , ĠPAGE _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Boundary Callback ( boundary Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠApp SearchResult ( data , Ġnetwork Errors ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġimages Local Cache . on Cle ared () ĊĠĠĠĠĠĠĠ Ġif Ġ( this :: boundary Callback . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboundary Callback . on Cle ared () ĊĠĠĠ Ġ} Ċ Ċ } Ċ