package Ġio . horizontal systems . bank wallet . modules . e vm fee Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġio . horizontal systems . bank wallet . R Ċ import Ġio . horizontal systems . bank wallet . core . ethereum . E vm Coin Service Ċ import Ġio . horizontal systems . bank wallet . core . providers . Translator Ċ import Ġio . horizontal systems . bank wallet . entities . Data State Ċ import Ġio . horizontal systems . bank wallet . entities . ViewState Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ Ċ class ĠE vm Fee Cell ViewModel ( ĊĠĠĠ Ġval Ġfee Service : ĠIE vm Fee Service , ĊĠĠĠ Ġval Ġgas Price Service : ĠIE vm Gas Price Service , ĊĠĠĠ Ġval Ġcoin Service : ĠE vm Coin Service Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġval Ġfee LiveData Ġ= ĠMutable LiveData ("") ĊĠĠĠ Ġval Ġview State LiveData Ġ= ĠMutable LiveData < ViewState >() ĊĠĠĠ Ġval Ġloading LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġvar Ġhighlight Edit Button Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsync Transaction Status ( fee Service . transaction Status ) ĊĠĠĠĠĠĠĠ Ġfee Service . transaction Status Observable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġsync Transaction Status ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġdis posable . add ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsync Transaction Status ( transaction Status : ĠData State < Transaction >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠhasError Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( transaction Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading LiveData . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading LiveData . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State LiveData . post Value ( ViewState . Error ( transaction Status . error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee LiveData . post Value ( Translator . getString ( R . string . Not Available )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠData State . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġtransaction Status . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading LiveData . post Value ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transaction . errors . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State LiveData . post Value ( ViewState . Error ( transaction . errors . first ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview State LiveData . post Value ( ViewState . Success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfee Ġ= Ġcoin Service . amount Data ( transaction Status . data . gas Data . fee ). get Formatted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee LiveData . post Value ( fee ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhighlight Edit Button Ġ= ĠhasError Ġ|| Ġ! gas Price Service . is Recommended Gas Price Selected ĊĠĠĠ Ġ} Ċ Ċ } Ċ