package Ġcom . world sn as . search . view Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġbutter knife . BindView Ċ import Ġcom . jak ew h art on . r xb ind ing 3 . widget . text Change Events Ċ import Ġcom . world sn as . android core . helpers . pages Ċ import Ġcom . world sn as . android core . hide Keyboard Ċ import Ġcom . world sn as . android core . show Keyboard Ċ import Ġcom . world sn as . android core . transition Name Compat Ċ import Ġcom . world sn as . base . Base View Ċ import Ġcom . world sn as . base . e po xy helper . E po xy Async RecyclerView Ċ import Ġcom . world sn as . d agger core . Core Component Ċ import Ġcom . world sn as . navigation . model . Search Local Model Ċ import Ġcom . world sn as . search . R Ċ import Ġcom . world sn as . search . Search Intent Ċ import Ġcom . world sn as . search . Search State Ċ import Ġcom . world sn as . search . di . D agger Search Component Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . rx kotlin . with Latest From Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠSearch View ( ĊĠĠĠ Ġbundle : ĠBundle Ċ ) Ġ: ĠBase View < Search State , ĠSearch Intent >( bundle ) Ġ{ ĊĊĠĠĠ Ġ@ BindView ( R . id . v Search Back ) ĊĠĠĠ Ġlateinit Ġvar Ġsearch Back : ĠView ĊĠĠĠ Ġ@ BindView ( R . id . ed t Search ) ĊĠĠĠ Ġlateinit Ġvar Ġsearch EditText : ĠEditText ĊĠĠĠ Ġ@ BindView ( R . id . img Back ) ĊĠĠĠ Ġlateinit Ġvar Ġback Btn : ĠImageView ĊĠĠĠ Ġ@ BindView ( R . id . search List ) ĊĠĠĠ Ġlateinit Ġvar Ġsearch List : ĠE po xy Async RecyclerView ĊĊĠĠĠ Ġprivate Ġval Ġsearch Local Ġ= Ġbundle . get Parcelable < Search Local Model >( Search Local Model . EXTRA _ SEARCH ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . view _ search ĊĊĠĠĠ Ġoverride Ġfun Ġinject Dependencies ( core : ĠCore Component ) Ġ{ ĊĠĠĠĠĠĠĠ ĠD agger Search Component ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind Router ( router ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. core Component ( core ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Bound ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Bound ( view ) ĊĊĠĠĠĠĠĠĠ Ġsearch Local ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Back . transition Name Compat Ġ= Ġback Transition Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch EditText . transition Name Compat Ġ= Ġtext Transition Name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġback Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . hide Keyboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrouter . handle Back () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsearch EditText . request Focus () ĊĠĠĠĠĠĠĠ Ġview . show Keyboard () ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠGrid LayoutManager ( view . context , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġsearch List . layout Manager Ġ= Ġlayout Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch List . adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( state : ĠSearch State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrender Loading ( state . base ) ĊĠĠĠĠĠĠĠ Ġrender Error ( state . base ) ĊĊĠĠĠĠĠĠĠ Ġrender List ( state ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġintent s (): ĠObservable < Search Intent > Ġ= ĊĠĠĠĠĠĠĠ ĠObservable . merge ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Query Intent s (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Page Intent s () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġsearch Query Intent s () Ġ= ĊĠĠĠĠĠĠĠ Ġsearch EditText . text Change Events () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Initial Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . text . toString (). length Ġ> Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. de bounce ( 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Intent . Search ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnext Page Intent s () Ġ= ĊĠĠĠĠĠĠĠ Ġsearch List . pages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Latest From ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch EditText . text Change Events () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. skip Initial Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . text . toString (). length Ġ> Ġ 1 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Intent . Next Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . second . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . first . total Items Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . first . page ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender List ( state : ĠSearch State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch List . with Models Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . movies . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMovie Row ( it , Ġpresenter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }