/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . hyper aware . android . firebase jet pack . activity . mult itr acker Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . hyper aware . android . firebase jet pack . R Ċ import Ġcom . hyper aware . android . firebase jet pack . activity . live price history . Stock Price History Activity Ċ import Ġcom . hyper aware . android . firebase jet pack . databinding . Stock Price ListItem Binding Ċ import Ġcom . hyper aware . android . firebase jet pack . view model . Stock Price Display Ċ import Ġcom . hyper aware . android . firebase jet pack . view model . Stock Price ViewModel Ċ import Ġkotlinx . android . synt hetic . main . toolbar .* Ċ import Ġorg . k oin . android . ext . android . inject Ċ Ċ class ĠStock Price Tracker Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Stock Price Tracker Act " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠT ICK ERS Ġ= Ġsorted Set Of (" H ST K ", Ġ" FB AS ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġauth Ġby Ġinject < Firebase Auth >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġroot Ġview / scaffold ing ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ multi _ tracker ) ĊĠĠĠĠĠĠĠ Ġtoolbar . setTitle ( R . string . track _ stocks ) ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= ĠfindViewById < ViewGroup >( R . id . c _ stocks ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġmodel ĊĠĠĠĠĠĠĠ Ġval Ġstock s ViewModel Ġ: ĠStock Price ViewModel Ġby Ġview Models () ĊĊĠĠĠĠĠĠĠ ĠT ICK ERS . forEach Ġ{ Ġticker Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġstock Ġviews ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠStock Price ListItem Binding . inflate ( layout Inflater , Ġcontainer , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWire Ġthem Ġup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= Ġstock s ViewModel . get Stock LiveData ( ticker ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . observe ( this , ĠObserver Ġ{ Ġstock Price Display Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stock Price Display Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stock Price Display . data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . stock Price Ġ= Ġstock Price Display . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( stock Price Display . exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Ob served Ġunexpected Ġexception ", Ġstock Price Display . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . stock Price Ġ= ĠStock Price Display ( ticker , Ġ" ERR ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠStock Price History Activity . new Intent ( this , Ġticker ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġauth . add Auth State Listener ( auth State Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġauth . remove Auth State Listener ( auth State Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġauth State Listener Ġ= ĠFirebase Auth . Auth State Listener Ġ{ Ġauth Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( auth . currentUser Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ