/** Ċ Ġ* Ġ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 . content . Context Ċ import Ġcom . bread wallet . bread box . B read Box Ċ import Ġcom . bread wallet . bread box . is E thereum Ċ import Ġcom . bread wallet . bread box . to BigDecimal Ċ import Ġcom . bread wallet . ext . throttle Latest Ċ import Ġcom . bread wallet . repository . Rates Repository Ċ import Ġcom . bread wallet . ui . tx details . Tx Details . E Ċ import Ġcom . bread wallet . ui . tx details . Tx Details . F Ċ import Ġcom . platform . entities . Tx MetaData Value Ċ import Ġcom . platform . interfaces . Account MetaData Provider Ċ import Ġd rew car l son . mob ius . flow . subtype Effect Handler Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . flatMap Latest Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . map Latest Ċ import Ġkotlinx . coroutines . flow . transform Latest Ċ import Ġjava . math . BigDecimal Ċ Ċ private Ġconst Ġval ĠME MO _ TH RO TT LE _ MS Ġ= Ġ 5 0 0 L Ċ private Ġconst Ġval ĠR ATE _ UPDATE _ MS Ġ= Ġ 6 0 _ 0 0 0 L Ċ Ċ fun Ġcreate Tx Details Handler ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġb read Box : ĠB read Box , ĊĠĠĠ Ġmeta DataProvider : ĠAccount MetaData Provider Ċ ) Ġ= Ġsubtype Effect Handler < F , ĠE > Ġ{ ĊĠĠĠ Ġadd Transformer < F . Update Memo > Ġ{ Ġeffects Ġ-> ĊĠĠĠĠĠĠĠ Ġeffects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. throttle Latest ( ME MO _ TH RO TT LE _ MS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. transform Latest Ġ{ Ġeffect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta DataProvider . put Tx MetaData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb read Box . wallet Transfer ( effect . currency Code , Ġeffect . transaction Hash ). first (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTx MetaData Value ( comment Ġ= Ġeffect . memo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġadd Transformer < F . Load Transaction MetaData > Ġ{ Ġeffects Ġ-> ĊĠĠĠĠĠĠĠ Ġeffects . flatMap Latest Ġ{ Ġeffect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb read Box . wallet Transfer ( effect . currency Code , Ġeffect . transaction Hash ). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta DataProvider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tx MetaData ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠE . On MetaData Updated ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġadd Transformer < F . Load Fi at Amount Now > Ġ{ Ġeffects Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġrates Ġ= ĠR ates Repository . getInstance ( context ) ĊĠĠĠĠĠĠĠ Ġeffects . transform Latest Ġ{ Ġeffect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrates . get Fi at For Crypto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . crypto Transfer red Amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . currency Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect . preferred Fi at Iso ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ Ġamount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( E . On Fi at Amount Now Updated ( amount )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( RATE _ UPDATE _ MS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġadd Transformer < F . Load Transaction > Ġ{ Ġeffects Ġ-> ĊĠĠĠĠĠĠĠ Ġeffects . flatMap Latest Ġ{ Ġeffect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb read Box . wallet Transfer ( effect . currency Code , Ġeffect . transaction Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Latest Ġ{ Ġtransfer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgas Price Ġ= ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgas Limit Ġ= ĠBigDecimal . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transfer . amount . currency . is E thereum ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfee Basis Ġ= Ġtransfer . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed Fee Basis . or Null () Ġ?: Ġestimated Fee Basis . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Price Ġ= Ġfee Basis . price Per Cost Factor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. convert ( bread Box . g wei Unit ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to BigDecimal () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Limit Ġ= Ġfee Basis . cost Factor . to BigDecimal () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE . On Transaction Updated ( transfer , Ġgas Price , Ġgas Limit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠB read Box . g wei Unit () Ġ= ĊĠĠĠ Ġget System Unsafe () !! ĊĠĠĠĠĠĠĠ Ġ. networks ĊĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġit . currency . is E thereum () Ġ} ĊĠĠĠĠĠĠĠ Ġ. run Ġ{ Ġunits For ( currency ). get () Ġ} ĊĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġit . symbol . contains (" g wei ", Ġtrue ) Ġ} Ċ