/** Ċ Ġ* ĠB read Wallet Ċ Ġ* Ġ< p /> Ċ Ġ* ĠCreated Ġby ĠD rew ĠCar l son Ġ< d rew . car l son @ bread wallet . com > Ġon Ġ 6 / 2 / 2 0 1 9 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġb read wallet ĠLLC Ċ Ġ* Ġ< p /> Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ġ< p /> Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ġ< p /> Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġcom . cry ptr on . legacy . price alert Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . cry ptr on . bread box . B read Box Ċ import Ġcom . cry ptr on . ext . map Ċ import Ġcom . cry ptr on . ext . mutable LiveData Ċ import Ġcom . cry ptr on . ext . switch Map Ċ import Ġcom . cry ptr on . model . Token Item Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Supervisor Job Ċ import Ġkotlinx . coroutines . cancel Children Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġkotlinx . coroutines . flow . take Ċ import Ġjava . util . Locale Ċ import Ġcom . bread wallet . crypto . Wallet Ġas ĠCrypto Wallet Ċ Ċ class ĠSelect Alert Crypto ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġb read Box : ĠB read Box Ċ ) Ġ: ĠViewModel (), ĠCor outine Scope Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcoroutine Context Ġ= ĠSuper visor Job () Ġ+ ĠDispatch ers . Default ĊĊĠĠĠ Ġprivate Ġval Ġselected Crypto Ġ= Ġmutable LiveData < Token Item >() ĊĠĠĠ Ġprivate Ġval Ġfilter Query Ġ= Ġmutable LiveData ("") ĊĠĠĠ Ġprivate Ġval Ġtoken Items Ġ= Ġmutable LiveData < List < Token Item >>() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġlist Ġof Ġthe Ġuser 's Ġactive Ġtokens ĊĠĠĠĠ Ġ* Ġfiltered Ġby Ġthe Ġcurrent Ġvalue Ġof Ġ[ filter Query ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetToken Items (): ĠLive Data < List < Token Item >> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( token Items . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb read Box . wallet s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġwallet s Ġ-> Ġwallet s . map To Token Item () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġtoken Items . post Value ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( this @ Select Alert Crypto ViewModel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfilter Query . switch Map Ġ{ ĠqueryString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( queryString . isBlank ()) Ġtoken Items ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġtoken Items . map Ġ{ Ġtoken Items Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Items . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name . equals ( queryString , Ġfalse ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . symbol . equals ( queryString , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġfilter Ġquery Ġused Ġby Ġ[ getToken Items ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Filter Query ( query : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Query . value Ġ= Ġquery Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġuser 's Ġchosen Ġitem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Selected Crypto (): ĠLive Data < Token Item > Ġ= Ġselected Crypto ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġuser Ġselected Ġitem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetSelected Crypto ( token Info : ĠToken Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Crypto . value Ġ= Ġtoken Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcoroutine Context . cancel Children () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTransform Ġa Ġlist Ġof Ġ[ Crypto Wallet ] Ġinto ĊĠĠĠĠ Ġ* Ġa Ġlist Ġof Ġ[ Token Item ] s Ġfor Ġthe ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠList < Crypto Wallet >. map To Token Item () Ġ= ĊĠĠĠĠĠĠĠ Ġmap Ġ{ Ġwallet Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġwallet . target . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol Ġ= Ġwallet . currency . code . toUpperCase ( Locale . ROOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġwallet . currency . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Supported Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Id Ġ= Ġwallet . currency . uid s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ