package Ġcom . mo hs en oid . gif browser . presentation . view . main Ċ Ċ import Ġcom . mo hs en oid . gif browser . data . exception . EndOf List Exception Ċ import Ġcom . mo hs en oid . gif browser . domain . Repository Ċ import Ġcom . mo hs en oid . gif browser . domain . entities . Gif Entity Ċ import Ġcom . mo hs en oid . gif browser . presentation . mapper . Mapper Ċ import Ġcom . mo hs en oid . gif browser . presentation . model . Gif Model Ċ import Ġcom . mo hs en oid . gif browser . util . config . Config Provider Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMain Presenter ( ĊĠĠĠ Ġprivate Ġval Ġconfig Provider : ĠConfig Provider , ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository , ĊĠĠĠ Ġprivate Ġval Ġgif Model Mapper : ĠMapper < Gif Entity , ĠG if Model > Ċ ) Ġ: ĠMain Contract . Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġview : ĠMain Contract . View ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( view : ĠMain Contract . View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġview ĊĊĠĠĠĠĠĠĠ Ġrepository . getLast SearchResult ()?. let Ġ{ Ġview . set Result ( it . map ( gif Model Mapper :: map )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġquery : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsearch ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Loading () ĊĠĠĠĠĠĠĠ Ġthis . query Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġfetch SearchResult () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsearch More ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Loading More () ĊĠĠĠĠĠĠĠ Ġfetch SearchResult ( page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġfetch SearchResult ( page : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! config Provider . is Online ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Offline Message ( is Critical Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Entities : ĠList < Gif Entity > Ġ= Ġrepository . search ( query , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Models : ĠList < Gif Model > Ġ= Ġresult Entities . map ( gif Model Mapper :: map ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. set Result ( result Models ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. update Result ( result Models ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w ( e ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġis ĠEnd Of List Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. re ached EndOf List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. showMessage ( e . message Ġ?: Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. hide Loading More () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ