package Ġit . cas at ta Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . Kotlin Module Ċ import Ġit . cas at ta . json . Data Ċ import Ġkotlinx . android . synt hetic . main . activity _ ps bt .* Ċ import Ġjava . io . Serializable Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList ĊĊ Ċ class ĠP SB T Activity Ġ: ĠContext Activity () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmapper Ġ= ĠObjectMapper (). register Module ( Kotlin Module ()) ĊĠĠĠ Ġprivate Ġval Ġinputs Adapter Ġ= ĠTx InOut Adapter () ĊĠĠĠ Ġprivate Ġval Ġoutputs Adapter Ġ= ĠTx InOut Adapter () ĊĠĠĠ Ġprivate Ġval Ġitems Adapter Ġ= ĠDesc Item Adapter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ ps bt ) ĊĊĠĠĠĠĠĠĠ Ġinputs . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġinputs . adapter Ġ= Ġinputs Adapter ĊĊĠĠĠĠĠĠĠ Ġoutputs . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġoutputs . adapter Ġ= Ġoutputs Adapter ĊĊĠĠĠĠĠĠĠ Ġval Ġp sbt String Ġ= Ġintent . getString Extra ( C . PS BT ) ĊĠĠĠĠĠĠĠ ĠLog . d (" PS BT ", Ġ"${ Network . TYPE } Ġ$ ps bt String ") ĊĠĠĠĠĠĠĠ Ġval Ġp sbt Json Ġ= Ġmapper . readValue ( ps bt String , ĠData . P sbt Json :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġp sbt File Dir Ġ= Ġ"$ files Dir /${ Network . TYPE }/ ps b ts /${ ps bt Json . id . name }/ " ĊĠĠĠĠĠĠĠ Ġval Ġp sbt FileName Ġ= Ġ"$ ps bt File Dir / ps bt . json " ĊĠĠĠĠĠĠĠ Ġval Ġp sbt Pretty Ġ= Ġprint ( ps bt FileName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġp sbt Title Ġ= Ġ" Transaction : Ġ${ ps bt Json . id . name }" ĊĠĠĠĠĠĠĠ Ġval Ġqr Content Ġ= ĠData . String Encoding ( Data . Encoding . BASE 6 4 , Ġp sbt Json . ps bt ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġp sbt Title ĊĠĠĠĠĠĠĠ Ġview _ qr . setOnClickListener Ġ{ ĠQ r Activity . come Here ( this , Ġp sbt Title , Ġqr Content Ġ) Ġ} ĊĠĠĠĠĠĠĠ Ġselect . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn Intent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Intent . putExtra ( C . RESULT , Ġp sbt Json . id . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġreturn Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdelete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC . show Delete Dialog ( this , Ġp sbt Json . id . name , Ġp sbt File Dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġp sbt Pretty . inputs . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġp sbt Pretty . inputs [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdescription : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input . wallet _ with _ path Ġ!= Ġnull Ġ&& Ġinput . signatures . isNotEmpty () Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"${ input . wallet _ with _ path } Ġ${ input . signatures . join ToString (", Ġ") }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( input . wallet _ with _ path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġinput . wallet _ with _ path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( input . signatures . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġinput . signatures . join ToString (", Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs Adapter . list . add ( Tx InOut Item (" input Ġ#$ i ", Ġinput . out point , Ġinput . value , Ġdescription )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġp sbt Pretty . outputs . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġp sbt Pretty . outputs [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs Adapter . list . add ( Tx InOut Item (" output Ġ#$ i ", Ġoutput . address , Ġoutput . value , Ġoutput . wallet _ with _ path Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġitems . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġitems . adapter Ġ= Ġitems Adapter ĊĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġp sbt Pretty . info . join ToString () ĊĠĠĠĠĠĠĠ Ġif Ġ( info . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" Info ", Ġinfo )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġformatted Rate Ġ= ĠString . format ( Locale . US , Ġ"% . 2 f Ġsat / v B ", Ġp sbt Pretty . fee . rate ) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" Fee ", Ġp sbt Pretty . fee . absolute _ fmt )) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" Fee Ġrate ", Ġformatted Rate )) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" Balances ", Ġp sbt Pretty . balances )) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" Est imated Ġsize ", Ġ"${ ps bt Pretty . size . estimated } Ġbytes ")) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" Unsigned Ġsize ", Ġ"${ ps bt Pretty . size . unsigned } Ġbytes ")) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" PS BT Ġsize ", Ġ"${ ps bt Pretty . size . ps bt } Ġbytes ")) ĊĠĠĠĠĠĠĠ Ġitems Adapter . list . add ( Desc Item (" PS BT ", Ġp sbt Json . ps bt )) ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠTx InOut Item ( val Ġindex : ĠString , Ġval Ġtitle : ĠString , Ġval Ġvalue : ĠString , Ġval Ġdescription : ĠString ?): ĠSerializable Ċ Ċ class ĠTx InOut Adapter Ġ: ĠRecyclerView . Adapter < Tx InOut Item Holder > (){ ĊĊĠĠĠ Ġval Ġlist : ĠArrayList < Tx InOut Item > Ġ= ĠArrayList () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): Int { ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠTx InOut Item Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . tx inout _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTx InOut Item Holder ( item ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠTx InOut Item Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġlist [ position ] ĊĠĠĠĠĠĠĠ Ġholder . update ( item ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTx InOut Item Holder ( item View : ĠView ): ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġindex Ġ= ĠitemView . findViewById < TextView >( R . id . index ) ĊĠĠĠ Ġprivate Ġval Ġtitle Ġ= ĠitemView . findViewById < TextView >( R . id . title ) ĊĠĠĠ Ġprivate Ġval Ġvalue Ġ= ĠitemView . findViewById < TextView >( R . id . value ) ĊĠĠĠ Ġprivate Ġval Ġdescription Ġ= ĠitemView . findViewById < TextView >( R . id . description ) ĊĊĠĠĠ Ġfun Ġupdate ( item : ĠTx InOut Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindex . text Ġ= Ġitem . index ĊĠĠĠĠĠĠĠ Ġtitle . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠ Ġvalue . text Ġ= Ġitem . value ĊĠĠĠĠĠĠĠ Ġif Ġ( item . description Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . text Ġ= Ġitem . description ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊĊĊ