/** Ċ Ġ* ĠB read Wallet Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠD rew ĠCar l son Ġ< d rew . car l son @ bread wallet . com > Ġon Ġ 9 / 1 7 / 1 9 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġb read wallet ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* Ġ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 . bread wallet . ui . tx details Ċ Ċ import Ġandroid . animation . Layout Transition Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . bread wallet . R Ċ import Ġcom . bread wallet . bread box . B read Box Effect Ċ import Ġcom . bread wallet . bread box . B read Box Effect Handler Ċ import Ġcom . bread wallet . bread box . B read Box Event Ċ import Ġcom . bread wallet . bread box . format Crypto For Ui Ċ import Ġcom . bread wallet . bread box . format Fi at For Ui Ċ import Ġcom . bread wallet . effect handler . metadata . MetaData Effect Ċ import Ġcom . bread wallet . effect handler . metadata . MetaData Effect Handler Ċ import Ġcom . bread wallet . effect handler . metadata . MetaData Event Ċ import Ġcom . bread wallet . mob ius . Composite Effect Handler Ċ import Ġcom . bread wallet . mob ius . nested Connect able Ċ import Ġcom . bread wallet . tools . manager . BR Clipboard Manager Ċ import Ġcom . bread wallet . tools . manager . BR Shared Prefs Ċ import Ġcom . bread wallet . tools . util . BR Date Util Ċ import Ġcom . bread wallet . ui . Base Mob ius Controller Ċ import Ġcom . bread wallet . ui . change handlers . Dialog Change Handler Ċ import Ġcom . bread wallet . ui . models . Transaction State Ċ import Ġcom . bread wallet . ui . navigation . Navigation Effect Ċ import Ġcom . bread wallet . ui . navigation . Router Navigation Effect Handler Ċ import Ġcom . bread wallet . ui . tx details . Tx Details . E Ċ import Ġcom . bread wallet . ui . tx details . Tx Details . F Ċ import Ġcom . bread wallet . ui . tx details . Tx Details . M Ċ import Ġcom . bread wallet . ui . view Ċ import Ġcom . spotify . mob ius . Connect able Ċ import Ġcom . spotify . mob ius . functions . Consumer Ċ import Ġkotlinx . android . synt hetic . main . transaction _ details .* Ċ import Ġorg . kode in . di . direct Ċ import Ġorg . kode in . di . er ased . instance Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . text . NumberFormat Ċ import Ġjava . util . Date Ċ Ċ /** Ċ Ġ* ĠTODO : ĠUpdated Ġto Ġsupport Ġnew ĠAPIs Ġand Ġimprove Ġgeneral ĠUX . Ċ Ġ* ĠĠ ĠRem aining ĠIssues : Ċ Ġ* ĠĠĠĠ Ġ- ĠEx pose Ġformatted Ġc urrencies Ġin ĠModel Ċ Ġ* ĠĠĠĠ Ġ- ĠImprove Ġgas Ġprice Ġhandling Ċ Ġ* ĠĠĠĠ Ġ- ĠValidate Ġstate Ġdisplays Ġ( handle Ġdeleted Ġstate ?) Ċ Ġ*/ Ċ class ĠTx Details Controller ( ĊĠĠĠ Ġargs : ĠBundle ? Ġ= Ġnull Ċ ) Ġ: ĠBase Mob ius Controller < M , ĠE , ĠF >( args ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCUR RE NCY _ CODE Ġ= Ġ" currency Code " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTRANS FER _ HASH Ġ= Ġ" transfer Hash " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( currency Code : ĠString , Ġtransfer Hash : ĠString ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġbundle Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCUR RE NCY _ CODE Ġto Ġcurrency Code , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTRANS FER _ HASH Ġto Ġtransfer Hash ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġcurrency Code Ġ= Ġarg < String >( CUR RE NCY _ CODE ) ĊĠĠĠ Ġprivate Ġval Ġtransaction Hash Ġ= Ġarg < String >( TRANSFER _ HASH ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Pop Handler ( Dialog Change Handler ()) ĊĠĠĠĠĠĠĠ Ġoverride Push Handler ( Dialog Change Handler ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlayout Id Ġ= ĠR . layout . transaction _ details ĊĠĠĠ Ġoverride Ġval Ġinit Ġ= ĠTx Details Init ĊĠĠĠ Ġoverride Ġval Ġupdate Ġ= ĠTx Details Update ĊĠĠĠ Ġoverride Ġval Ġdefault Model : ĠM ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠM . create Default ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Code , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Hash , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBR Shared Prefs . get Preferred Fi at Iso (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBR Shared Prefs . is Crypto Preferred () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġval Ġeffect Handler : ĠConnect able < F , ĠE > Ġ= ĊĠĠĠĠĠĠĠ ĠComposite Effect Handler . from ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnect able Ġ{ Ġoutput : ĠConsumer < E > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTx Details Handler ( output , ĠcheckNotNull ( activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnested Connect able ({ Ġoutput : ĠConsumer < B read Box Event > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB read Box Effect Handler ( output , Ġcurrency Code , Ġdirect . instance ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġeffect : ĠF Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( effect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF . Load Transaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB read Box Effect . Load Transaction ( transaction Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġevent : ĠB read Box Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠB read Box Event . On Transaction Updated Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE . On Transaction Updated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . transaction , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . gas Price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . gas Limit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ? ĠE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnested Connect able ({ Ġoutput : ĠConsumer < MetaData Event > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Data Effect Handler ( output , Ġdirect . instance (), Ġdirect . instance ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġeffect : ĠF Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( effect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF . Load Transaction MetaData Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Data Effect . Load Transaction MetaData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . currency Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . transaction Hash ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF . Update Memo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMeta Data Effect . Update Transaction Comment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . currency Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . transaction Hash , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . memo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġevent : ĠMeta Data Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMeta Data Event . On Transaction MetaData Updated Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE . On MetaData Updated ( event . tx MetaData ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ? ĠE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnested Connect able ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirect . instance < Router Navigation Effect Handler >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġeffect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( effect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF . Close Ġ-> ĠNavigation Effect . Go Back ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( view ) ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE : ĠThis Ġallows Ġanimate Layout Changes Ġto Ġproperly Ġanimate Ġdetails Ġshow / hide ĊĠĠĠĠĠĠĠ Ġ( view Ġas ĠViewGroup ). layout Transition . enable Transition Type ( Layout Transition . CHANG ING ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġtx _ to _ from _ address . text Colors . default Color ĊĠĠĠĠĠĠĠ Ġmemo _ input . setTextColor ( color ) ĊĠĠĠĠĠĠĠ Ġfee _ primary _ label . text Ġ= Ġresources !!. getString ( R . string . Send _ fee , Ġ"") ĊĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrouter . pop Current Controller () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind View ( output : ĠConsumer < E >) Ġ= Ġoutput . view Ġ{ ĊĠĠĠĠĠĠĠ Ġclose _ button . onClick ( E . On Closed Clicked ) ĊĠĠĠĠĠĠĠ Ġshow _ hide _ details . onClick ( E . On Show Hide Details Clicked ) ĊĠĠĠĠĠĠĠ Ġmemo _ input . on TextChanged ( E :: On Memo Changed ) ĊĊĠĠĠĠĠĠĠ Ġtransaction _ id . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ id . text ?. toString ()?. run (:: copy To Clipboard ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtx _ to _ from _ address . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ to _ from _ address . text ?. toString ()?. run (:: copy To Clipboard ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ id . setOnClickListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ to _ from _ address . setOnClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach ( view ) ĊĠĠĠĠĠĠĠ Ġview . setOnClickListener ( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHide Ġsoft keyboard Ġif Ġit 's Ġvisible ĊĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġview . context . getSystem Service ( Input Method Manager :: class . java ) ĊĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( memo _ input . window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Long Method ", Ġ" Complex Method ") ĊĠĠĠ Ġoverride Ġfun ĠM . render () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĠcheckNotNull ( resources ) ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: show Details ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetails _ container . isVisible Ġ= Ġshow Details ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow _ hide _ details . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Details Ġ-> ĠR . string . Transaction Details _ hide Details ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . Transaction Details _ show Details ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: is Fee For Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Fee For Token ) Ġ{ Ġ// Ġit 's Ġa Ġtoken Ġtransfer ĠETH Ġtx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemo _ input . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . getString ( R . string . Transaction _ token Transfer ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee Token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemo _ input . is Focus able Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: is Received ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sent Views (! is Received ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ action . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Received Ġ-> ĠR . string . Transaction Details _ title Received ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . Transaction Details _ title Sent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ to _ from . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Received Ġ-> ĠR . string . Transaction Details _ address Via Header ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . Transaction Details _ address To Header ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ amount . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Received Ġ-> ĠR . color . transaction _ amount _ received _ color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . color . total _ assets _ usd _ color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Received ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM :: is Eth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM :: gas Price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM :: gas Limit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Eth Views ( is Eth ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Eth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠNumber Format . getInteger Instance (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum Fraction Digits Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Grouping Used Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas _ price . text Ġ= Ġ"% s Ġ% s ". format ( gas Price . to BigInteger (), Ġ" g wei ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas _ limit . text Ġ= Ġformatter . format ( gas Limit ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Changed ( M :: transaction Total ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee _ secondary . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Total . format Crypto For Ui ( currency Code , ĠMAX _ CRYPTO _ DIG ITS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM :: fee , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM :: is E rc 2 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Total Cost (! is E rc 2 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee _ primary . text Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis E rc 2 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% s Ġ% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee . strip Trailing Z eros (). to Plain String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" g wei " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfee . format Crypto For Ui ( currency Code , ĠMAX _ CRYPTO _ DIG ITS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: block Number ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Confirmed View ( block Number Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: fi at Amount When Sent , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: exchange Currency Code , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: fi at Amount Now , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: preferred Fi at Iso ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Now Ġ= Ġfi at Amount Now . format Fi at For Ui ( preferred Fi at Iso ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow When Sent Ġ= Ġfi at Amount When Sent . compareTo ( BigDecimal . ZERO ) Ġ!= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel _ when _ sent . text Ġ= Ġres . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Received Ġ-> ĠR . string . Transaction Details _ amount When Received ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . Transaction Details _ amount When Sent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfi at Amount When Sent . format Fi at For Ui ( exchange Currency Code ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Now ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount _ now . text Ġ= Ġamount Now ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel _ when _ sent . visibility Ġ= Ġif Ġ( show When Sent ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount _ now . visibility Ġ= Ġif Ġ(! show When Sent ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: to Or From Address ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠDo Ġwe Ġneed Ġa Ġstring Ġres Ġfor Ġno Ġhash Ġtext ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ to _ from _ address . text Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Or From Address . isNotBlank () Ġ-> Ġto Or From Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"< unknown >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: crypto Transfer red Amount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ amount . text Ġ= Ġcrypto Transfer red Amount . format Crypto For Ui ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMAX _ CRYPTO _ DIG ITS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is Received ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: memo Loaded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( memo Loaded Ġ&& Ġ! is Fee For Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemo _ input . setText ( memo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: exchange Currency Code , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: preferred Fi at Iso , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: exchange Rate , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM :: is Received ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexchange _ rate _ label . setText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Received Ġ-> ĠR . string . Transaction _ exchange On Day Received ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . Transaction _ exchange On Day Sent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexchange _ rate . text Ġ= Ġexchange Rate . format Fi at For Ui ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexchange Currency Code . isNotBlank () Ġ-> Ġexchange Currency Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġpreferred Fi at Iso ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: confirmation Date ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ date . text Ġ= ĠBR Date Util . getFull Date (( confirmation Date Ġ?: ĠDate ()). time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: transaction Hash ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction _ id . text Ġ= Ġtransaction Hash ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: confirmed In Block Number ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed _ in _ block _ number . text Ġ= Ġconfirmed In Block Number ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: confirm ations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm ations _ value . text Ġ= Ġconfirm ations . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: transaction State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( transaction State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction State . CON FI R MED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Completed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . set Compound Draw ables Relative With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . check mark _ circ led , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . setText ( R . string . Transaction _ complete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . setText ( R . string . Transaction _ confirm ing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction State . FAILED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . setText ( R . string . Transaction Details _ initialized Timestamp Header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction State . CONFIRM ING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . set Compound Draw ables With Intr insic Bounds ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx _ status . setText ( R . string . Transaction _ confirm ing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Changed ( M :: destination Tag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination Tag Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Destination Tag . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination _ tag _ divider . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( destination Tag . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination _ tag _ value . setText ( R . string . Transaction Details _ destination Tag _ Empty Hint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination _ tag _ value . text Ġ= Ġdestination Tag . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Sent Views ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfee _ primary _ container . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġfee _ secondary _ container . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġfee _ primary _ divider . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġfee _ secondary _ divider . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġshow Eth Views ( show ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Eth Views ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgas _ price _ container . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġgas _ limit _ container . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġgas _ price _ divider . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġgas _ limit _ divider . isVisible Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Total Cost ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfee _ secondary _ container . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġfee _ secondary _ divider . isVisible Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Confirmed View ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfirmed _ container . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġconfirmed _ divider . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġconfirm ations _ divider . isVisible Ġ= Ġshow ĊĠĠĠĠĠĠĠ Ġconfirm ations _ container . isVisible Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy To Clipboard ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠB RC lip board Manager . put Clipboard ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtoast Long ( R . string . Receive _ copied ) ĊĠĠĠ Ġ} Ċ } Ċ