package Ġcom . binary br icks . coin bit . features . coin search Ċ Ċ import ĠCoin Search Contract Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . binary br icks . coin bit . Coin Bit Application Ċ import Ġcom . binary br icks . coin bit . R Ċ import Ġcom . binary br icks . coin bit . data . database . entities . W atched Coin Ċ import Ġcom . binary br icks . coin bit . e po xy models . Coin Search Item View Ċ import Ġcom . binary br icks . coin bit . e po xy models . coin Search Item View Ċ import Ġcom . binary br icks . coin bit . features . Crypto Compare Repository Ċ import Ġcom . binary br icks . coin bit . features . coin details . Coin Details Activity Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . crash ly t ics . Firebase Crash ly t ics Ċ import Ġkotlinx . android . synt hetic . main . activity _ coin _ search .* Ċ import Ġjava . math . BigDecimal Ċ Ċ class ĠCoin Search Activity Ġ: ĠAppCompatActivity (), ĠCoin Search Contract . View Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġis Coin Info Changed Ġ= Ġfalse ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġbuild Launch Intent ( context : ĠContext ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠIntent ( context , ĠCoin Search Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcoin Repo Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCrypto Compare Repository ( Coin Bit Application . database ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcoin Search Presenter : ĠCoin Search Presenter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCoin Search Presenter ( coin Repo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ coin _ search ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < View >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar Ġas ĠToolbar ?) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġrv Search List . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĊĠĠĠĠĠĠĠ Ġcoin Search Presenter . attach View ( this ) ĊĊĠĠĠĠĠĠĠ Ġlifecycle . add Observer ( coin Search Presenter ) ĊĊĠĠĠĠĠĠĠ Ġcoin Search Presenter . load All Coins () ĊĊĠĠĠĠĠĠĠ ĠFirebase Crash ly t ics . getInstance (). log (" Coin Search Activity ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Or Hide Loading Indicator ( show Loading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! show Loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpb Loading . hide () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpb Loading . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Network Error ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( rv Search List , ĠerrorMessage , ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Coins Loaded ( coin List : ĠList < W atched Coin >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġshow Coins InThe List ( coin List ) ĊĊĠĠĠĠĠĠĠ Ġet Search Bar . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( filter Text : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter String Ġ= Ġfilter Text . toString (). trim (). toLowerCase () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Coins InThe List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin List . filter Ġ{ Ġw atched Coin Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw atched Coin . coin . coin Name . contains ( filter String , Ġtrue ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw atched Coin . coin . symbol . contains ( filter String , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( p 0 : ĠCharSequence ?, Ġp 1 : ĠInt , Ġp 2 : ĠInt , Ġp 3 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Coins InThe List ( coin List : ĠList < W atched Coin >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrv Search List . with Models Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoin List . forEach Ġ{ Ġw atched Coin Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Search Item View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid ( w atched Coin . coin . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw atched Coin ( w atched Coin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Details Intent Ġ= ĠCoin Details Activity . build Launch Intent ( this @ Coin Search Activity , Ġw atched Coin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( coin Details Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon W atched Checked ( object Ġ: ĠCoin Search Item View . On Search ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item W atched Clicked ( w atched : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( w atched Coin . purchase Quantity Ġ== ĠBigDecimal . ZERO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Search Presenter . update Coin W atched Status ( w atched , Ġw atched Coin . coin . id , Ġw atched Coin . coin . symbol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Coin Info Changed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( rv Search List , ĠgetString ( R . string . coin _ already _ purchase d ), ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Coin W atched Status Updated ( w atched : ĠBoolean , Ġcoin Symbol : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġstatus Text Ġ= Ġif Ġ( w atched ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . coin _ added _ to _ watch list , Ġcoin Symbol ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . coin _ removed _ to _ watch list , Ġcoin Symbol ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( rv Search List , Ġstatus Text , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Coin Info Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ } Ċ