package Ġorg . erg op l atform . ui logic . transactions Ċ Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . erg op l atform . api . E rg o Explorer Api Ċ import Ġorg . erg op l atform . pers istance . Address Transaction Ċ import Ġorg . erg op l atform . pers istance . I App Database Ċ import Ġorg . erg op l atform . transactions . Transaction Info Ċ import Ġorg . erg op l atform . transactions . get Attachment Text Ċ import Ġorg . erg op l atform . transactions . reduce Boxes Ċ import Ġorg . erg op l atform . ui logic . STRING _ DESC _ TRANSACTION _ EXEC UTION _ TIME Ċ import Ġorg . erg op l atform . ui logic . STRING _ DESC _ TRANSACTION _ WAIT ING Ċ import Ġorg . erg op l atform . ui logic . String Provider Ċ import Ġorg . erg op l atform . utils . Log Utils Ċ import Ġorg . erg op l atform . utils . milliseconds ToLocal Time Ċ Ċ abstract Ġclass ĠTransaction Info Ui Logic Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmax Addresses To Show Ġ= Ġ 2 0 0 Ġ// ĠMi ĠG ore ng Ġand Ġother Ġair drop Ġfun ... ĊĊĠĠĠ Ġabstract Ġval Ġcoroutine Scope : ĠCor outine Scope ĊĊĠĠĠ Ġvar Ġtx Id : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġexplorer Tx Info : Ġorg . erg op l atform . explorer . client . model . Transaction Info ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlocal Db Info : ĠAddress Transaction ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġinit ( ĊĠĠĠĠĠĠĠ Ġtx Id : ĠString , ĊĠĠĠĠĠĠĠ Ġaddress : ĠString ?, Ġ// Ġthe Ġaddress Ġis Ġused Ġto Ġfetch Ġun confirmed Ġtransactions , Ġsee Ġbelow ĊĠĠĠĠĠĠĠ Ġer go Api : ĠE rg o Explorer Api , ĊĠĠĠĠĠĠĠ Ġdb : ĠI App Database ? Ġ// Ġwhen Ġgiven Ġand Ġtransaction Ġis Ġnot Ġfound Ġon ĠExplorer , Ġit Ġis Ġloaded Ġfrom ĠDB ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . tx Id Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġthis . tx Id Ġ= Ġtx Id ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Call Ġ= Ġer go Api . getTransaction Information ( tx Id ). execute () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Info Ġ= Ġif Ġ( tx Call . is Successful ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Call . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ(! tx Call . is Successful Ġ&& Ġtx Call . code () Ġ== Ġ 4 0 4 Ġ&& Ġaddress Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtx Ġmight Ġstill Ġbe Ġun confirmed , Ġbut ĠExplorer ĠAPI Ġhas Ġno Ġdocumented Ġendpoint Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfetch Ġun confirmed Ġtx Ġby Ġid . ĠThe Ġund ocument ed ĠAPI Ġthe Ġfrontend Ġis Ġcalling ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdoes Ġnot Ġreturn Ġassets Ġfor Ġin boxes Ġand Ġhas Ġa Ġdifferent Ġformatting Ġin Ġnu ances , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġwe Ġtrick Ġhere Ġby Ġfetching Ġall Ġun confirmed Ġtransactions Ġfor Ġan Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġfilter Ġthe Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmemp ool Call Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġer go Api . getM emp ool Transactions For Address ( address , Ġ 5 , Ġ 0 ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemp ool Call . body ()?. items ?. first OrNull Ġ{ Ġit . id Ġ== Ġtx Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplorer Tx Info Ġ= Ġtx Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Db Info Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tx Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Transaction Information F etched ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplorer Tx Info !!. inputs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplorer Tx Info !!. outputs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). reduce Boxes (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . inputs . take ( max Addresses To Show ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . outputs . take ( max Addresses To Show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( db Ġ!= Ġnull Ġ&& Ġaddress Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġcould Ġnot Ġload Ġthe Ġtransaction Ġfrom Ġexplorer , Ġcheck Ġif Ġwe Ġhave Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġlocal ĠDB Ġto Ġshow Ġat Ġleast Ġsome Ġlocally Ġsaved Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġshow Ġdetails Ġof Ġcancelled Ġtransactions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Db Info Ġ= Ġdb . transaction Db Provider . load Address Transaction ( address , Ġtx Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Transaction Information F etched ( local Db Info ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Transaction Information F etched ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Utils . log Debug ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . java Class . simple Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Error Ġfetching Ġtransaction Ġinformation : Ġ${ t . message }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Transaction Information F etched ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġtransaction Ġpurpose Ġby Ġextracting Ġattachment Ġof Ġfirst Ġoutput ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtransaction Purpose : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( local Db Info Ġ!= Ġnull ) Ġlocal Db Info ?. message ĊĠĠĠĠĠĠĠ Ġelse Ġexplorer Tx Info ?. outputs ?. map Ġ{ Ġit . get Attachment Text () Ġ} ?. filter NotNull ()?. first OrNull () ĊĊĠĠĠ Ġfun Ġget Transaction Execution State ( string Provider : ĠString Provider ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġlocal Db Info ?. getTransaction State String ( string Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġif Ġ( explorer Tx Info ?. in clusion Height Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTRING _ DESC _ TRANSACTION _ EXEC UTION _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmilliseconds ToLocal Time ( explorer Tx Info !!. timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Provider . getString ( STRING _ DESC _ TRANSACTION _ WAIT ING ) ĊĊĠĠĠ Ġabstract Ġfun Ġon Transaction Information F etched ( ti : ĠTransaction Info ?) Ċ }