File tree Expand file tree Collapse file tree 4 files changed +19
-12
lines changed
backend/coins/btc/handlers Expand file tree Collapse file tree 4 files changed +19
-12
lines changed Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ import (
22
22
"os"
23
23
"path"
24
24
"path/filepath"
25
+ "strconv"
25
26
"strings"
26
27
"time"
27
28
@@ -272,7 +273,7 @@ func (input *sendTxInput) UnmarshalJSON(jsonBytes []byte) error {
272
273
SendAll string `json:"sendAll"`
273
274
FeeTarget string `json:"feeTarget"`
274
275
// Provided in Sat/vByte, will be converted to Sat/vKb.
275
- FeePerByte float64 `json:"feePerByte"`
276
+ FeePerByte string `json:"feePerByte"`
276
277
Amount string `json:"amount"`
277
278
SelectedUTXOS []string `json:"selectedUTXOS"`
278
279
Data string `json:"data"`
@@ -288,7 +289,13 @@ func (input *sendTxInput) UnmarshalJSON(jsonBytes []byte) error {
288
289
if err != nil {
289
290
return errp .WithMessage (err , "Failed to retrieve fee target code" )
290
291
}
291
- input .FeePerKb = btcutil .Amount (jsonBody .FeePerByte * 1000 )
292
+ if input .FeeTargetCode == accounts .FeeTargetCodeCustom {
293
+ feePerKb , err := strconv .ParseFloat (jsonBody .FeePerByte , 64 )
294
+ if err != nil {
295
+ return err
296
+ }
297
+ input .FeePerKb = btcutil .Amount (feePerKb * 1000 )
298
+ }
292
299
if jsonBody .SendAll == "yes" {
293
300
input .Amount = coin .NewSendAmountAll ()
294
301
} else {
Original file line number Diff line number Diff line change @@ -38,10 +38,10 @@ interface FeeTargetsProps {
38
38
disabled : boolean ;
39
39
fiatUnit : Fiat ;
40
40
proposedFee ?: AmountWithConversions ;
41
- feePerByte : number ;
41
+ feePerByte : string ;
42
42
showCalculatingFeeLabel ?: boolean ;
43
43
onFeeTargetChange : ( code : Code ) => void ;
44
- onFeePerByte : ( feePerByte : number ) => void ;
44
+ onFeePerByte : ( feePerByte : string ) => void ;
45
45
error ?: string ;
46
46
}
47
47
@@ -104,7 +104,7 @@ class FeeTargets extends Component<Props, State> {
104
104
105
105
private handleFeePerByte = ( event : Event ) => {
106
106
const target = event . target as HTMLInputElement ;
107
- this . props . onFeePerByte ( Number ( target . value ) ) ;
107
+ this . props . onFeePerByte ( target . value ) ;
108
108
}
109
109
110
110
private setFeeTarget = ( feeTarget : Code ) => {
Original file line number Diff line number Diff line change @@ -83,7 +83,7 @@ interface State {
83
83
fiatUnit : Fiat ;
84
84
sendAll : boolean ;
85
85
feeTarget ?: FeeCode ;
86
- feePerByte : number ;
86
+ feePerByte : string ;
87
87
isConfirming : boolean ;
88
88
isSent : boolean ;
89
89
isAborted : boolean ;
@@ -134,7 +134,7 @@ class Send extends Component<Props, State> {
134
134
activeScanQR : false ,
135
135
videoLoading : false ,
136
136
note : '' ,
137
- feePerByte : 1 ,
137
+ feePerByte : '' ,
138
138
} ;
139
139
140
140
private coinSupportsCoinControl = ( ) => {
@@ -234,7 +234,7 @@ class Send extends Component<Props, State> {
234
234
amount : undefined ,
235
235
data : undefined ,
236
236
note : '' ,
237
- feePerByte : 1 ,
237
+ feePerByte : '' ,
238
238
} ) ;
239
239
if ( this . utxos ) {
240
240
( this . utxos as any ) . getWrappedInstance ( ) . clear ( ) ;
@@ -268,7 +268,7 @@ class Send extends Component<Props, State> {
268
268
269
269
private sendDisabled = ( ) => {
270
270
const txInput = this . txInput ( ) ;
271
- return ! txInput . address || this . state . feeTarget === undefined || ( txInput . sendAll === 'no' && ! txInput . amount ) ;
271
+ return ! txInput . address || this . state . feeTarget === undefined || ( txInput . sendAll === 'no' && ! txInput . amount ) || ( this . state . feeTarget === 'custom' && ! this . state . feePerByte ) ;
272
272
}
273
273
274
274
private validateAndDisplayFee = ( updateFiat : boolean = true ) => {
Original file line number Diff line number Diff line change @@ -75,7 +75,7 @@ describe('routes/account/send/feetargets', () => {
75
75
USD : '0.02' ,
76
76
} ,
77
77
} }
78
- feePerByte = { 1 }
78
+ feePerByte = ""
79
79
onFeePerByte = { jest . fn ( ) }
80
80
onFeeTargetChange = { jest . fn ( ) } /> ,
81
81
) ;
@@ -94,7 +94,7 @@ describe('routes/account/send/feetargets', () => {
94
94
coinCode = "eth"
95
95
disabled = { false }
96
96
fiatUnit = "EUR"
97
- feePerByte = { 1 }
97
+ feePerByte = ""
98
98
onFeePerByte = { jest . fn ( ) }
99
99
onFeeTargetChange = { jest . fn ( ) } /> ,
100
100
) ;
@@ -121,7 +121,7 @@ describe('routes/account/send/feetargets', () => {
121
121
coinCode = "btc"
122
122
disabled = { false }
123
123
fiatUnit = "USD"
124
- feePerByte = { 1 }
124
+ feePerByte = ""
125
125
onFeePerByte = { jest . fn ( ) }
126
126
onFeeTargetChange = { onFeeTargetChangeCB } /> ,
127
127
) ;
You can’t perform that action at this time.
0 commit comments