package Ġio . horizontal systems . bank wallet . modules . sen dev m transaction Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . platform . Compose View Ċ import Ġandroidx . compose . ui . platform . View Composition Strategy Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . horizontal systems . bank wallet . R Ċ import Ġio . horizontal systems . bank wallet . core . ethereum . E thereum Fee ViewModel Ċ import Ġio . horizontal systems . bank wallet . modules . transaction Info . Colo red Value Ċ import Ġio . horizontal systems . bank wallet . ui . compose . Compose App Theme Ċ import Ġio . horizontal systems . bank wallet . ui . compose . components . Button Secondary Default Ċ import Ġio . horizontal systems . bank wallet . ui . compose . components . El lipsis Ċ import Ġio . horizontal systems . bank wallet . ui . compose . components . Text Important Ċ import Ġio . horizontal systems . bank wallet . ui . helpers . Text Helper Ċ import Ġio . horizontal systems . core . helpers . Hud Helper Ċ import Ġio . horizontal systems . views . List Position Ċ import Ġio . horizontal systems . views . inflate Ċ import Ġkotlinx . android . extensions . Layout Container Ċ import Ġkotlinx . android . synt hetic . main . view _ holder _ amount .* Ċ import Ġkotlinx . android . synt hetic . main . view _ holder _ e vm _ confirmation _ sub head .* Ċ import Ġkotlinx . android . synt hetic . main . view _ holder _ title _ value _ hex .* Ċ import Ġkotlinx . android . synt hetic . main . view _ holder _ title _ value _ hex . background View Ċ import Ġkotlinx . android . synt hetic . main . view _ holder _ title _ value _ hex . title TextView Ċ import Ġkotlinx . android . synt hetic . main . view _ send _ e vm _ transaction . view .* Ċ Ċ class ĠSend E vm Transaction View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 ) ĊĠĠĠ Ġ: ĠConstraint Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( context , ĠR . layout . view _ send _ e vm _ transaction , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction ViewModel : ĠSend E vm Transaction ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe thereum Fee ViewModel : ĠEthereum Fee ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner : ĠLifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Speed Info Listener : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfee Selector View . set Fee Selector View Interactions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe thereum Fee ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe thereum Fee ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Speed Info Listener ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠSend E vm Transaction Adapter () ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġtransaction ViewModel . view Items LiveData . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġflatten Section View Items ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġtransaction ViewModel . error LiveData . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . text Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġflatten Section View Items ( sections : ĠList < Section View Item >): ĠList < View Item With Position > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Items Ġ= Ġmutable ListOf < View Item With Position >() ĊĊĠĠĠĠĠĠĠ Ġsections . forEach Ġ{ Ġsection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection . view Items . forEach Indexed Ġ{ Ġindex , Ġview Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Items . add ( View Item With Position ( view Item , ĠList Position . getList Position ( section . view Items . size , Ġindex ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Items . add ( View Item With Position ( null , ĠList Position . First )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview Items ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ data Ġclass ĠView Item With Position ( ĊĠĠĠĠĠĠĠ Ġval Ġview Item : ĠView Item ?, ĊĠĠĠĠĠĠĠ Ġval Ġlist Position : ĠList Position Ċ ) Ċ Ċ class ĠSend E vm Transaction Adapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠ Ġvar Ġitems : ĠList < View Item With Position > Ġ= ĠlistOf () ĊĊĠĠĠ Ġenum Ġclass ĠView Type Ġ{ ĊĠĠĠĠĠĠĠ ĠSub head , ĠValue , ĠAmount , ĠAddress , ĠInput , ĠSpace , ĠWarning ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġview Types Ġ= ĠView Type . values () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( items [ position ]. view Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Sub head Ġ-> ĠView Type . Sub head . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Address Ġ-> ĠView Type . Address . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Value Ġ-> ĠView Type . Value . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Amount Ġ-> ĠView Type . Amount . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Input Ġ-> ĠView Type . Input . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Warning Ġ-> ĠView Type . Warning . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠView Type . Space . ordinal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Types [ view Type ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Sub head Ġ-> ĠSub head ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Space Ġ-> ĠSpace ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Address Ġ-> ĠTitle Value Hex ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Value Ġ-> ĠTitle Value ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Amount Ġ-> ĠAmount ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Input Ġ-> ĠTitle Value Hex ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Type . Warning Ġ-> ĠWarning ViewHolder . create ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġis ĠWarning ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . compose View . dispose Composition () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Position Ġ= Ġitems [ position ]. list Position ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġitem Ġ= Ġitems [ position ]. view Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Sub head Ġ-> Ġ( holder Ġas ? ĠSub head ViewHolder )?. bind ( item , Ġlist Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Address Ġ-> Ġ( holder Ġas ? ĠTitle Value Hex ViewHolder )?. bind ( item . title , Ġitem . value Title , Ġitem . value , Ġlist Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Value Ġ-> Ġ( holder Ġas ? ĠTitle Value ViewHolder )?. bind ( item , Ġlist Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Amount Ġ-> Ġ( holder Ġas ? ĠAmount ViewHolder )?. bind ( item . fi at Amount , Ġitem . coin Amount , Ġlist Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Input Ġ-> Ġ( holder Ġas ? ĠTitle Value Hex ViewHolder )?. bind (" Input ", Ġitem . value , Ġitem . value , Ġlist Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView Item . Warning Ġ-> Ġ( holder Ġas ? ĠWarning ViewHolder )?. bind ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSpace ViewHolder ( override Ġval Ġcontainer View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( container View ), ĠLayout Container Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ) Ġ= ĠSpace ViewHolder ( inflate ( parent , ĠR . layout . view _ send _ e vm _ space , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSub head ViewHolder ( override Ġval Ġcontainer View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( container View ), ĠLayout Container Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠView Item . Sub head , Ġposition : ĠList Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue TextView . text Ġ= Ġitem . value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground View . setBackground Resource ( position . get Background ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ) Ġ= ĠSub head ViewHolder ( inflate ( parent , ĠR . layout . view _ holder _ e vm _ confirmation _ sub head , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠWarning ViewHolder ( val Ġcompose View : ĠCompose View ) Ġ: ĠRecyclerView . ViewHolder ( compose View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompose View . setView Composition Strategy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Composition Strategy . Dispose On View Tree Lifecycle Destroyed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠView Item . Warning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompose View . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompose App Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Important ( text Ġ= Ġitem . description , Ġtitle Ġ= Ġitem . title , Ġicon Ġ= Ġitem . icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ) Ġ= ĠWarning ViewHolder ( Compose View ( parent . context )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTitle Value Hex ViewHolder ( override Ġval Ġcontainer View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( container View ), ĠLayout Container Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( title : ĠString , Ġvalue Title : ĠString , Ġvalue : ĠString , Ġposition : ĠList Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Compose . setContent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompose App Theme Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton Secondary Default ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( horizontal Ġ= Ġ 1 6 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġvalue Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Helper . copy Text ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ud Helper . show Success Message ( container View , ĠR . string . Hud _ Text _ Copied ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġellipsis Ġ= ĠEl lipsis . Middle ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground View . setBackground Resource ( position . get Background ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ) Ġ= ĠTitle Value Hex ViewHolder ( inflate ( parent , ĠR . layout . view _ holder _ title _ value _ hex , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠTitle Value ViewHolder ( override Ġval Ġcontainer View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( container View ), ĠLayout Container Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠView Item . Value , Ġposition : ĠList Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle TextView . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue TextView . text Ġ= Ġitem . value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextColor Ġ= Ġwhen Ġ( item . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValueType . Regular Ġ-> Ġitem . color Ġ?: ĠR . color . br an ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValueType . Disabled Ġ-> ĠR . color . grey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValueType . Outgoing Ġ-> ĠR . color . jacob ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValueType . Incoming Ġ-> ĠR . color . rem us ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue TextView . setTextColor ( container View . context . getColor ( textColor )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground View . setBackground Resource ( position . get Background ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ) Ġ= ĠTitle Value ViewHolder ( inflate ( parent , ĠR . layout . view _ holder _ title _ value , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠAmount ViewHolder ( override Ġval Ġcontainer View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( container View ), ĠLayout Container Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( fi at Amount : ĠString ?, Ġcoin Amount : ĠCo lo red Value , Ġposition : ĠList Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfi at TextView . text Ġ= Ġfi at Amount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoin TextView . text Ġ= Ġcoin Amount . value ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoin TextView . setTextColor ( container View . context . getColor ( coin Amount . color )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground View . setBackground Resource ( position . get Background ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcreate ( parent : ĠViewGroup ) Ġ= ĠAmount ViewHolder ( inflate ( parent , ĠR . layout . view _ holder _ amount , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ