package Ġcom . bt spl us plus . f ow allet . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . widget . ImageView Ċ import Ġbit shares .* Ċ import Ġcom . bt spl us plus . f ow allet .* Ċ import Ġcom . f ow allet . wallet core . b ts . Chain Object Manager Ċ import Ġcom . f ow allet . wallet core . b ts . Wallet Manager Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠV c Utils Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) Ġ è½¬ åĪ° éĹ® åı· QA æıĲç¤º é¡µéĿ¢ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġgoto Qa View ( ctx : ĠActivity , Ġanchor _ name : ĠString , Ġtitle : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ[ ç»Łè®¡ ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbt sp p Log Custom (" qa _ tip _ click ", ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" qa ", Ġanchor _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . goTo WebView ( title , Ġ" https :// bt sp p . io /${ ctx . resources . getString ( R . string . qa Html FileName )} #$ anchor _ name ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ ç¡® ä¿Ŀ ä¾Ŀèµĸ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġguard Graph ene Object Depend ence ( ctx : ĠActivity , Ġobject _ ids : ĠAny , Ġbody : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ ary : ĠJSONArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( object _ ids Ġis ĠJSONArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ary Ġ= Ġobject _ ids ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ary Ġ= Ġjson Array from ( object _ ids ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Request ( ctx , ĠChain Object Manager . shared Chain Object Manager (). query All Graph ene Objects ( ary )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) Ġ å°ģè£ħ åŁºæľ¬ çļĦ è¯·æ±Ĥ æĵįä½ľ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġsimple Request ( ctx : ĠActivity , Ġrequest : ĠPromise , Ġcallback : Ġ( data : ĠAny ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmask Ġ= ĠView Mask ( R . string . k Tips Be Request ing . xml string ( ctx ), Ġctx ). apply Ġ{ Ġshow () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ then Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. catch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . show Toast ( R . string . tip _ network _ error . xml string ( ctx )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) ĠåĪ¤æĸŃ ä¸¤ä¸ª èµĦ äº§ åĵª ä¸ª ä½ľä¸º base èµĦ äº§ ï¼Į è¿ĶåĽŀ base èµĦ äº§ çļĦ symbol ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcalc Base Asset ( asset _ symbol 0 1 : ĠString , Ġasset _ symbol 0 2 : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpriority Hash Ġ= ĠChain Object Manager . shared Chain Object Manager (). gen Asset Base Priority Hash () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpriority 0 1 Ġ= Ġpriority Hash . opt Int ( asset _ symbol 0 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpriority 0 2 Ġ= Ġpriority Hash . opt Int ( asset _ symbol 0 2 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( priority 0 1 Ġ> Ġpriority 0 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġasset _ symbol 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġasset _ symbol 0 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) Ġ å¤ĦçĲĨ åĵįåºĶ Ġ- Ġæ£Ģ æµĭ APP çīĪæľ¬ ä¿¡æģ¯ æķ°æį® è¿ĶåĽŀ ãĢĤ æľī æĸ° çīĪæľ¬ è¿ĶåĽŀ ĠYES ï¼Į åĲ¦ æĸ° çīĪæľ¬ è¿ĶåĽŀ ĠNO ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġprocess Check App Version Response d ( ctx : ĠActivity , Ġp Config : ĠJSONObject ?, Ġrem ind _ later _ callback : Ġ(() Ġ-> ĠUnit )? ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p Config Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Native Version Ġ= ĠUtils . app Version Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp New est Version Ġ= Ġp Config . opt String (" version ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p New est Version Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠUtils . compare Version ( p New est Version , Ġp Native Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ret Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġæľī æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġp Config . opt String ( ctx . resources . getString ( R . string . launch Tip Version Key ), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĠString . format ( ctx . resources . getString ( R . string . launch Tip Default New Version ), Ġp New est Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ show App Update Window ( ctx , Ġmessage , Ġp Config . getString (" app URL "), Ġp Config . getString (" force "). toInt () Ġ!= Ġ 0 , Ġrem ind _ later _ callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġæľī æĸ° çīĪæľ¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ æĹł æĸ° çīĪæľ¬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( private ) Ġ è¯¢ éĹ® Ġ- Ġæĺ¯åĲ¦ æĽ´æĸ° çīĪæľ¬ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ_ show App Update Window ( ctx : ĠActivity , Ġmessage : ĠString , Ġurl : ĠString , Ġforce Update : ĠBoolean , Ġrem ind _ later _ callback : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbtn _ cancel : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! force Update ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ cancel Ġ= Ġctx . resources . getString ( R . string . k Rem ind Me L atter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils Alert . showMessage Confirm ( ctx , Ġctx . resources . getString ( R . string . k W arm Tips ), Ġmessage , Ġbtn _ ok Ġ= Ġctx . resources . getString ( R . string . k Upgrade Now ), Ġbtn _ cancel Ġ= Ġbtn _ cancel ). then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull Ġ&& Ġit Ġas ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ ç«ĭ åį³ åįĩçº§ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . open URL ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ ç¨ į åĲİ æıĲ é ĨĴ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rem ind _ later _ callback Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem ind _ later _ callback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) ĠçĶŁæĪĲ éĤ Ģ è¯· éĵ¾æİ¥ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġgen Share Link ( ctx : ĠActivity , Ġcontain Welcome Message : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet Mgr Ġ= ĠWallet Manager . shared Wallet Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= ĠString . format (" https :// fa uc et . bt sp p . io /? lang =% s ", Ġctx . resources . getString ( R . string . k Share Link Page Default Lang )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wallet Mgr . is Wallet Exist ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠString . format ("% s & r =% s ", Ġvalue , Ġwallet Mgr . get Wallet AccountName () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contain Welcome Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠString . format ("% s \ n % s ", Ġctx . resources . getString ( R . string . k Share Welcome Message ), Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) Ġ å¤ĦçĲĨ å¯¼åħ¥ éļĲ ç§ģ è´¦æĪ· ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġprocess Import Bl ind Account ( ctx : ĠActivity , Ġstr _ alias _ name : ĠString , Ġstr _ password : ĠString , Ġsuccess _ callback : Ġ(( bl ind _ account : ĠJSONObject ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( str _ alias _ name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . show Toast ( ctx . resources . getString ( R . string . k Vc St Tip Err Please Input Alias Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( str _ password . isEmpty () Ġ|| Ġ! Wallet Manager . isValid Ste alth Transfer Brain Key ( str _ password , Ġk App Bl ind Account Brain Key Check Sum Prefix )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . show Toast ( ctx . resources . getString ( R . string . k Vc St Tip Err Please Input Bl ind Account Brain Key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ å¼Ģå§ĭ å¯¼åħ¥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh dk Ġ= ĠHD Wallet . from Mnemonic ( str _ password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmain _ key Ġ= Ġh dk . derive Bit shares ( EH DB it shares Permission Type . eh db pt _ ste alth _ main key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw if _ main _ pri _ key Ġ= Ġmain _ key . to W if PrivateKey () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw if _ main _ pub _ key Ġ= ĠOrg Utils . gen B ts Address From W if PrivateKey ( w if _ main _ pri _ key ) !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblind _ account Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" public _ key ", Ġw if _ main _ pub _ key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" alias _ name ", Ġstr _ alias _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" parent _ key ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet Mgr Ġ= ĠWallet Manager . shared Wallet Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( wallet Mgr . is Wallet Exist () Ġ&& Ġ! wallet Mgr . is Password Mode ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ è§£ éĶģ éĴ± åĮħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . guard Wallet Unlock ed ( false ) Ġ{ Ġun locked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( unlocked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ éļĲ ç§ģ äº¤æĺĵ ä¸» åľ°åĿĢ å¯¼åħ¥ éĴ± åĮħ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfull _ wallet _ bin Ġ= Ġwallet Mgr . wallet Bin Import Account ( null , Ġjson Array from ( w if _ main _ pri _ key )) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp CacheManager . shared App CacheManager (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Bl ind Account ( bl ind _ account , Ġauto _ save Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Wallet Bin ( full _ wallet _ bin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Backup Wallet To Web dir ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ éĩįæĸ° è§£ éĶģ ï¼Ī åį³ åĪ·æĸ° è§£ éĶģ åĲİçļĦ è´¦åı· ä¿¡æģ¯ ï¼īãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunlock Infos Ġ= Ġwallet Mgr . re Unlock ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( unlock Infos . getBoolean (" unlock Success ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ å¯¼åħ¥ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success _ callback Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess _ callback ( bl ind _ account ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ( public ) Ġ å¤ĦçĲĨ äº¤æĺĵ å¯¹ çĬ¶æĢģ åıĺ æĽ´ ï¼Į æĶ¶ èĹı Ġor Ġ åıĸæ¶Ī æĶ¶ èĹı ãĢĤ åıĺ æĽ´ æĪĲåĬŁ è¿ĶåĽŀ ĠYES ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ ĠNO ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġprocess My Fav Pair StateChanged ( ctx : ĠActivity , Ġquote : ĠJSONObject , Ġbase : ĠJSONObject , Ġassociated _ view : ĠImageView ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp App Cache Ġ= ĠApp CacheManager . shared App CacheManager () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquote _ id Ġ= Ġquote . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase _ id Ġ= Ġbase . getString (" id ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p App Cache . is _ fav _ market ( quote _ id , Ġbase _ id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠåĪłéĻ¤ çļĦ æĥħåĨµ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp App Cache . remove _ fav _ mark ets ( quote _ id , Ġbase _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated _ view ?. setColor Filter ( ctx . resources . getColor ( R . color . theme 0 1 _ textColor Gray )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . show Toast ( ctx . resources . getString ( R . string . k Tips Add Fav Delete )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ[ ç»Łè®¡ ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbt sp p Log Custom (" event _ market _ remove _ fav ", ĠjsonObject from K VS (" base ", Ġbase _ id , Ġ" quote ", Ġquote _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġæ·»åĬł çļĦ æĥħåĨµ ï¼Į å¦Ĥæŀľ æĺ¯ èĩªå®ļä¹ī äº¤æĺĵ å¯¹ ï¼Į åĪĻ éľĢè¦ģ åĪ¤æĸŃ æĺ¯åĲ¦ è¾¾ åĪ° ä¸Ĭ éĻĲ ï¼Į æĶ¶ èĹı äº¤æĺĵ å¯¹ åĪĻ ä¸į çĶ¨ é¢Ŀ å¤ĸ å¤ĦçĲĨ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchain Mgr Ġ= ĠChain Object Manager . shared Chain Object Manager () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ èĩªå®ļä¹ī äº¤æĺĵ å¯¹ åĪ¤æĸŃ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! chain Mgr . is Default Pair ( quote , Ġbase )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax _ custom _ pair _ num Ġ= Ġchain Mgr . getDefault Parameters (). getInt (" max _ custom _ pair _ num ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn _ custom Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfav hash Ġ= Ġp App Cache . get _ all _ fav _ mark ets () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġfav hash . keys ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfav item Ġ= Ġfav hash . getJSONObject ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġq Ġ= Ġchain Mgr . get Chain Object ByID ( fav item . getString (" quote ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġchain Mgr . get Chain Object ByID ( fav item . getString (" base ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! chain Mgr . is Default Pair ( q , Ġb )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn _ custom Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n _ custom Ġ>= Ġmax _ custom _ pair _ num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . show Toast ( String . format ( ctx . resources . getString ( R . string . k Search Tips Max Custom Par isNumber ), Ġmax _ custom _ pair _ num . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġä¸į éĻĲåĪ¶ ï¼ļ æ·»åĬł æĶ¶ èĹı ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp App Cache . set _ fav _ mark ets ( quote _ id , Ġbase _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassociated _ view ?. setColor Filter ( ctx . resources . getColor ( R . color . theme 0 1 _ textColor Highlight )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . show Toast ( ctx . resources . getString ( R . string . k Tips Add Fav Success )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ[ ç»Łè®¡ ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbt sp p Log Custom (" event _ market _ add _ fav ", ĠjsonObject from K VS (" base ", Ġbase _ id , Ġ" quote ", Ġquote _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ ä¿ĿåŃĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp App Cache . save Fav Mark ets ToFile () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ Ġ æłĩè®° ï¼ļ èĩª éĢī åĪĹè¡¨ éľĢè¦ģ æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTemp Manager . shared Temp Manager (). favorites Market Dirty Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ