/** Ċ # ĠCopyright Ġ 2 0 1 8 Ġ- ĠTrans co di um ĠLtd . Ċ # Ġ ĠAll Ġrights Ġreserved . ĠThis Ġprogram Ġand Ġthe Ġaccompanying Ġmaterials Ċ # Ġ Ġare Ġmade Ġavailable Ġunder Ġthe Ġterms Ġof Ġthe Ġ ĠApache ĠLicense Ġv 2 . 0 Ġwhich Ġaccomp anies Ġthis Ġdistribution . Ċ # Ċ # Ġ ĠThe ĠApache ĠLicense Ġv 2 . 0 Ġis Ġavailable Ġat Ċ # Ġ Ġhttp :// www . opensource . org / licenses / apache 2 . 0 . php Ċ # Ċ # Ġ ĠYou Ġare Ġrequired Ġto Ġredistribute Ġthis Ġcode Ġunder Ġthe Ġsame Ġlicenses . Ċ # Ċ # Ġ ĠProject ĠT NS Money Ċ # Ġ Ġ@ author ĠR az ak ĠZ ak ari Ġ< raz ak @ trans co di um . com > Ċ # Ġ Ġhttps :// trans co di um . com Ċ # Ġ Ġcreated _ at Ġ 2 6 / 0 8 / 2 0 1 8 Ċ Ġ**/ Ċ Ċ package Ġcom . trans co di um . tn sm oney . classes Ċ Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . coroutines . experimental . android . UI Ċ import Ġkotlinx . coroutines . experimental . launch Ċ import Ġorg . json . JSONObject Ċ import Ġkotlinx . android . synt hetic . main . activity _ home .* Ċ import Ġandroid . view . View Animation Utils Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . animation . do On Start Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġcom . trans co di um . tn sm oney .* Ċ import Ġkotlinx . android . synt hetic . main . app _ bar .* Ċ import Ġkotlinx . android . synt hetic . main . home _ coin _ info .* Ċ import Ġjava . util .* ĊĊ Ċ class ĠCoin s Core Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcolors Ġby Ġlazy { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tns " Ġto ĠR . color . color T NS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" eth " Ġto ĠR . color . color ETH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" btc " Ġto ĠR . color . color BTC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x mr " Ġto ĠR . color . color X MR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lt c " Ġto ĠR . color . color L TC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" eos " Ġto ĠR . color . color EOS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ}// end Ġcolors ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġicons Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tns " Ġto ĠR . drawable . ic _ tns _ normal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" eth " Ġto ĠR . drawable . ic _ eth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" btc " Ġto ĠR . drawable . ic _ btc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x mr " Ġto ĠR . drawable . ic _ x mr , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lt c " Ġto ĠR . drawable . ic _ lt c , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" eos " Ġto ĠR . drawable . ic _ eos ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġget Color ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ Ġget Color ( ctx : ĠContext , Ġcoin : ĠString ): ĠInt { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors [ coin ] Ġ?: ĠR . color . color Primary Dark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġget Icon ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Icon ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ Ġicons [ name ] Ġ?: ĠR . drawable . transparent _ img ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġfetch Ġuser Coins ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġfetch User Coins ( activity : ĠActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender UI : ĠBoolean Ġ= Ġfalse ): ĠStatus Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ"/ wallet / coins " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Status Ġ= ĠT ns Api ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( uri ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( data Status . isError ()){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( render UI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Alert ( activity ). show Status ( Status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata Status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}// end ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// lets Ġget Ġthe Ġdata Ġand Ġinsert Ġinto Ġdb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! render UI ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata Status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġdata Status . getData < JSONObject >() !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Home UI ( activity , data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata Status ĊĠĠĠĠĠĠĠ Ġ}// end ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġupdate Home Coin Card Color ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġupdate Home Coin Info Card ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Info : ĠJSONObject ĊĠĠĠĠĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠĠĠĠ Ġactivity . apply { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Duration Ġ= Ġ 1 0 0 0 L ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Name Ġ= Ġcoin Info . getString (" name ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsymbol ĠĠ Ġ= Ġcoin Info . getString (" symbol "). toLowerCase () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// user Ġbalance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Balance Ġ= Ġcoin Info . opt Double (" balance ", 0 . 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// split Ġuser Balance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Balance Split Ġ= Ġuser Balance . toString (). split (".") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Color Ġ= ĠCoin s Core . getColor ( this , symbol ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Color Dar ken Ġ= Ġcoin Color . dar ken ( 0 . 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġcoin Info Card Ġas ĠCard View ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Color Ġ= Ġview . card BackgroundColor . default Color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Bg Anim Ġ= ĠObject Animator . of Int ( toolbar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" backgroundColor ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Color Dar ken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Bg Anim . add Update Listener { Ġls -> Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Color Ġ= Ġls . animated Value Ġas ĠInt Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Card BackgroundColor ( anim Color ) Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . setStatus Bar Color ( anim Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Bg Anim . duration Ġ= Ġanim Duration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Bg Anim . set Evaluator ( Argb Evaluator ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Bg Anim . do On Start Ġ{ Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . set Toolbar Title ( coin Name ) Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Ġuser Balance Ġthe Ġsame Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// the Ġbg Ġanim Ġstarts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Balance View . animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( anim Duration / 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with End Action { Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Ticker . text Ġ= Ġsymbol Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġuser Ġbalance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance First Digit . text Ġ= Ġuser Balance Split [ 0 ] Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbalance Decimal Ġ= Ġ". ${ user Balance Split [ 1 ]}" Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Balance Decimal . text Ġ= Ġbalance Decimal Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Balance View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. animate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( anim Duration / 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}// end Ġdo Ġon Ġstart ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Bg Anim . start () ĊĠĠĠĠĠĠĠĠĠĠ Ġ}// end ĊĊĠĠĠĠĠĠĠ Ġ}// end Ġfun ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġupdate Ġhome Ġcoins ĠUI ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġupdate Home UI ( activity : ĠActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoins Info : ĠJSONObject ) Ġ= Ġlaunch ( UI ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// we Ġneed ĠT NS Ġfirst Ġso Ġwe Ġextract Ġit Ġand Ġput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ns Coin Info Ġ= Ġcoins Info . getJSONObject (" tns ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoins Info . remove (" tns ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Data Ġ= Ġmutable ListOf < JSONObject >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsorted Data . add ( tns Coin Info ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( coin Key Ġin Ġcoins Info . keys ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorted Data . add ( coins Info . getJSONObject ( coin Key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠHome Coin ListAdapter ( sorted Data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġactivity . findViewById < RecyclerView >( R . id . coins List Recycler ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( re cyclerView . adapter Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . swap Adapter ( adapter , true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Ġinitial Ġ Ġui ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Home Coin Info Card ( activity , tns Coin Info ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Column Ġ= Ġactivity . cal Columns ( 1 6 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrid Layout Ġ= ĠGrid LayoutManager ( activity , cal Column ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġgrid Layout ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}// end Ġfun ĊĊĠĠĠ Ġ} Ċ } ĊĊ