package Ġcom . pag ings ample project . ui ĊĊ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . arch . paging . Paged List Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġcom . pag ings ample project . R Ċ import Ġcom . pag ings ample project . model . Repo Search Ċ import Ġcom . spotify player . enums . Status Ċ import Ġkotlinx . android . synt hetic . main . activity _ search _ repositories .* ĊĊ Ċ class ĠSearch Repositories Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠRe pos Adapter () ĊĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠSearch Repositories ViewModel ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLAST _ SEARCH _ QUERY : ĠString Ġ= Ġ" last _ search _ query " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ QUERY Ġ= Ġ" Android " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search _ repositories ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , Search Repositories ViewModel . Factory ( this @ Search Repositories Activity )). get ( Search Repositories ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġinit Adapter () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠsavedInstanceState ?. getString ( LAST _ SEARCH _ QUERY ) Ġ?: ĠDEFAULT _ QUERY ĊĠĠĠĠĠĠĠ ĠviewModel . search Re posit oe ies ( query ) ĊĊĠĠĠĠĠĠĠ Ġinit Search ( query ) ĊĊĠĠĠĠĠĠĠ Ġhide Keyboard ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . putString ( LAST _ SEARCH _ QUERY , ĠviewModel . last Query Value ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Adapter (){ ĊĠĠĠĠĠĠĠ Ġlist . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ ĠviewModel . repos . observe ( this , ĠObserver < Paged List < Repo Search >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Activity ", Ġ" list : Ġ${ it ?. size }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġshow Empty List ( it ?. size Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . network State . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it !!. status ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . FAILED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ"\ uD 8 3 D \ u DE 2 8 ĠW oo ops Ġ${ it . msg }", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ"\ uD 8 3 D \ u DE 2 8 ĠW oo ops Ġ${ it . status }", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠContext . hide Keyboard ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Method Manager Ġ= Ġget System Service ( Activity . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( view . window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Search ( query Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch _ repo . setText ( query ) ĊĠĠĠĠĠĠĠ Ġsearch _ repo . setOn Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ GO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Repo List From Input () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsearch _ repo . setOn Key Listener Ġ{ Ġ_, ĠkeyCode , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠKeyEvent . ACTION _ DOWN Ġ&& ĠkeyCode Ġ== ĠKeyEvent . KEYCODE _ ENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Repo List From Input () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Repo List From Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch _ repo . text . trim (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search Re posit oe ies ( it . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ