/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAl gor and , ĠInc . Ċ Ġ* Ġ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 Ġhttp :// 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 . al gor and . android . utils Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . al gor and . android . Home Navigation Directions . Companion . action Global Add Contact Fragment Ċ import Ġcom . al gor and . android . Home Navigation Directions . Companion . action Global Send Info Fragment Ċ import Ġcom . al gor and . android . models . Account Ċ import Ġcom . al gor and . android . models . Asset Information Ċ import Ġcom . al gor and . android . models . Decoded Qr Code Ċ import Ġcom . al gor and . android . models . Notification Type Ċ import Ġcom . al gor and . android . ui . accounts . Accounts Fragment Directions Ċ import Ġcom . al gor and . android . ui . common . Asset Action Bottom Sheet Ċ Ċ const Ġval ĠSELECT ED _ ACCOUNT _ KEY Ġ= Ġ" selected Account Key " Ċ const Ġval ĠSELECT ED _ AS SET _ ID _ KEY Ġ= Ġ" selected Asset Id Key " Ċ const Ġval ĠAS SET _ SUPPORT _ REQUEST ED _ PUBLIC _ KEY Ġ= Ġ" support Requested PublicKey " Ċ const Ġval ĠAS SET _ SUPPORT _ REQUEST ED _ AS SET _ KEY Ġ= Ġ" support Requested Asset " Ċ const Ġval ĠDE E PL INK _ AND _ NAV IG ATION _ INT ENT Ġ= Ġ" dee plink nav Intent " Ċ private Ġconst Ġval ĠNO _ VALUE Ġ= Ġ- 1 L Ċ Ċ private Ġfun ĠNav Controller . handle Selected Asset Navigation ( ĊĠĠĠ Ġaccount CacheManager : ĠAccount CacheManager , ĊĠĠĠ Ġselected Account Key : ĠString , ĊĠĠĠ Ġselected Asset Id : ĠLong Ċ ) Ġ{ ĊĠĠĠ Ġval Ġselected Account Cache Data Ġ= Ġaccount CacheManager . getCache Data ( selected Account Key ) ĊĠĠĠ Ġval Ġselected Asset Information Ġ= Ġaccount CacheManager . get Asset Information ( selected Account Key , Ġselected Asset Id ) ĊĠĠĠ Ġif Ġ( selected Account Cache Data Ġ!= Ġnull Ġ&& Ġselected Asset Information Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate Safe ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccounts Fragment Directions . action Accounts Fragment To Asset Detail Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Asset Information , Ġselected Account Cache Data . account . address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠNav Controller . handle Dee plink ( ĊĠĠĠ Ġdecoded Qr Code : ĠDe coded Qr Code , ĊĠĠĠ Ġaccount CacheManager : ĠAccount CacheManager , ĊĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġon Wallet Connect Result : Ġ(( String ) Ġ-> ĠUnit ? )? Ġ= Ġnull Ċ ): ĠBoolean Ġ{ ĊĊĠĠĠ Ġif Ġ( decoded Qr Code . wallet Connect Url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Wallet Connect Result ?. invoke ( decoded Qr Code . wallet Connect Url ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( decoded Qr Code . address Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( decoded Qr Code . amount Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Id Ġ= Ġdecoded Qr Code . get Decoded Asset ID () ĊĠĠĠĠĠĠĠ Ġval Ġaccount Asset Pair List Ġ= Ġaccount CacheManager . get Account Cache With Specific Asset ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Id , ĠlistOf ( Account . Type . WATCH ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( account Asset Pair List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset Action Bottom Sheet . show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsset Action Bottom Sheet . Type . UNSUPPORTED _ ADD _ TRY _ L ATER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnavigate Safe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Global Send Info Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Information Ġ= Ġaccount Asset Pair List . first (). second , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġdecoded Qr Code . amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġdecoded Qr Code . note , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx note Ġ= Ġdecoded Qr Code . x note , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Account Address Ġ= Ġdecoded Qr Code . address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate Safe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Global Add Contact Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Name Ġ= Ġdecoded Qr Code . label , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact PublicKey Ġ= Ġdecoded Qr Code . address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ fun ĠNav Controller . handle Intent ( ĊĠĠĠ Ġintent To Handle : ĠIntent , ĊĠĠĠ Ġaccount CacheManager : ĠAccount CacheManager , ĊĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġon Wallet Connect Result : Ġ( String ) Ġ-> ĠUnit Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġwith ( intent To Handle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata String Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecoded Dee plink Ġ= Ġdecode Dee plink ( data String ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Dee plink ( decoded Dee plink , Ġaccount CacheManager , Ġfragment Manager , Ġon Wallet Connect Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġhandle Intent With Bundle ( this , Ġaccount CacheManager , Ġfragment Manager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠNav Controller . handle Intent With Bundle ( ĊĠĠĠ Ġintent To Handle : ĠIntent , ĊĠĠĠ Ġaccount CacheManager : ĠAccount CacheManager , ĊĠĠĠ Ġfragment Manager : ĠFragment Manager Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġwith ( intent To Handle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġchange Ġyour Ġarchitecture Ġfor Ġthe Ġbug Ġhere . Ġhttps :// issue tracker . google . com / issues / 3 7 0 5 3 3 8 9 ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġfixes Ġthe Ġproblem Ġfor Ġnow . ĠBe Ġcareful Ġwhen Ġadding Ġmore Ġthan Ġone Ġparcel able . ĊĠĠĠĠĠĠĠ Ġset Extras ClassLoader ( Asset Information :: class . java . class Loader ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Asset To Open Ġ= Ġget Long Extra ( SELECTED _ AS SET _ ID _ KEY , ĠNO _ VALUE ) ĊĠĠĠĠĠĠĠ Ġval Ġselected PublicKey To Open Ġ= ĠgetString Extra ( SELECTED _ ACCOUNT _ KEY ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! selected PublicKey To Open . isNull Or Blank () Ġ&& Ġselected Asset To Open Ġ!= ĠNO _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Selected Asset Navigation ( account CacheManager , Ġselected PublicKey To Open , Ġselected Asset To Open ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġasset Support Requested PublicKey Ġ= ĠgetString Extra ( AS SET _ SUPPORT _ REQUEST ED _ PUBLIC _ KEY ) ĊĠĠĠĠĠĠĠ Ġval Ġasset Support Requested Asset Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Parcelable Extra < Asset Information >( AS SET _ SUPPORT _ REQUEST ED _ AS SET _ KEY ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! asset Support Requested PublicKey . isNull Or Blank () Ġ&& Ġasset Support Requested Asset Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset Action Bottom Sheet . show ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Support Requested Asset . asset Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsset Action Bottom Sheet . Type . UNSUPPORTED _ NOTIFICATION _ REQUEST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Support Requested PublicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Support Requested Asset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ Ċ // ĠTODO Ġchange Ġaccording Ġto Ġnotification Ġtype Ġlater Ġon . Ċ fun ĠNav Controller . is Notification Can Be Shown ( notification Type : ĠNotification Type , Ġis App Unlock ed : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( is App Unlock ed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse Ċ } Ċ