aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan <danjm.com@gmail.com>2017-10-31 05:46:56 +0800
committerDan <danjm.com@gmail.com>2017-11-07 03:37:02 +0800
commit716bbf67d7180ffe0f59d07484d30231ed5f5e49 (patch)
tree490719eef5a8aab92c3ebb70389eb9e1f8408bb5
parentb16946723f94b855ab70469dca5899ad80f129b3 (diff)
downloadtangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.tar
tangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.tar.gz
tangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.tar.bz2
tangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.tar.lz
tangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.tar.xz
tangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.tar.zst
tangerine-wallet-browser-716bbf67d7180ffe0f59d07484d30231ed5f5e49.zip
Set gas price allows for WEI precision.
-rw-r--r--ui/app/components/customize-gas-modal/index.js20
-rw-r--r--ui/app/components/input-number.js17
-rw-r--r--ui/app/components/send/send-constants.js1
-rw-r--r--ui/app/conversion-util.js2
4 files changed, 30 insertions, 10 deletions
diff --git a/ui/app/components/customize-gas-modal/index.js b/ui/app/components/customize-gas-modal/index.js
index 5bd6c54cb..dcb058690 100644
--- a/ui/app/components/customize-gas-modal/index.js
+++ b/ui/app/components/customize-gas-modal/index.js
@@ -73,6 +73,8 @@ function getOriginalState (props) {
gasLimit,
gasTotal,
error: null,
+ priceSigZeros: '',
+ priceSigDec: '',
}
}
@@ -167,7 +169,15 @@ CustomizeGasModal.prototype.convertAndSetGasLimit = function (newGasLimit) {
}
CustomizeGasModal.prototype.convertAndSetGasPrice = function (newGasPrice) {
- const { gasLimit } = this.state
+ const { gasLimit, priceSigZeros } = this.state
+ const priceStrLength = newGasPrice.length
+ const sigZeros = String(newGasPrice).match(/^\d+[.]\d*?(0+)$/)
+ const sigDec = String(newGasPrice).match(/^\d+([.])0*$/)
+
+ this.setState({
+ priceSigZeros: sigZeros && sigZeros[1] || '',
+ priceSigDec: sigDec && sigDec[1] || '',
+ })
const gasPrice = conversionUtil(newGasPrice, {
fromNumericBase: 'dec',
@@ -189,15 +199,17 @@ CustomizeGasModal.prototype.convertAndSetGasPrice = function (newGasPrice) {
CustomizeGasModal.prototype.render = function () {
const { hideModal } = this.props
- const { gasPrice, gasLimit, gasTotal, error } = this.state
+ const { gasPrice, gasLimit, gasTotal, error, priceSigZeros, priceSigDec } = this.state
- const convertedGasPrice = conversionUtil(gasPrice, {
+ let convertedGasPrice = conversionUtil(gasPrice, {
fromNumericBase: 'hex',
toNumericBase: 'dec',
fromDenomination: 'WEI',
toDenomination: 'GWEI',
})
+ convertedGasPrice += convertedGasPrice.match(/[.]/) ? priceSigZeros : `${priceSigDec}${priceSigZeros}`
+
const convertedGasLimit = conversionUtil(gasLimit, {
fromNumericBase: 'hex',
toNumericBase: 'dec',
@@ -222,7 +234,7 @@ CustomizeGasModal.prototype.render = function () {
value: convertedGasPrice,
min: MIN_GAS_PRICE_GWEI,
// max: 1000,
- step: MIN_GAS_PRICE_GWEI,
+ step: multiplyCurrencies(MIN_GAS_PRICE_GWEI, 10),
onChange: value => this.convertAndSetGasPrice(value),
title: 'Gas Price (GWEI)',
copy: 'We calculate the suggested gas prices based on network success rates.',
diff --git a/ui/app/components/input-number.js b/ui/app/components/input-number.js
index e28807c13..da4d739aa 100644
--- a/ui/app/components/input-number.js
+++ b/ui/app/components/input-number.js
@@ -5,6 +5,7 @@ const {
addCurrencies,
conversionGTE,
conversionLTE,
+ subtractCurrencies,
toNegative,
} = require('../conversion-util')
@@ -17,18 +18,24 @@ function InputNumber () {
this.setValue = this.setValue.bind(this)
}
+function isValidInput (text) {
+ const re = /^([1-9]\d*|0)(\.|\.\d*)?$/
+ return re.test(text)
+}
+
InputNumber.prototype.setValue = function (newValue) {
+ if (newValue && !isValidInput(newValue)) return
const { fixed, min = -1, max = Infinity, onChange } = this.props
- newValue = Number(fixed ? newValue.toFixed(4) : newValue)
+ newValue = fixed ? newValue.toFixed(4) : newValue
const newValueGreaterThanMin = conversionGTE(
- { value: newValue, fromNumericBase: 'dec' },
+ { value: newValue || '0', fromNumericBase: 'dec' },
{ value: min, fromNumericBase: 'hex' },
)
const newValueLessThanMax = conversionLTE(
- { value: newValue, fromNumericBase: 'dec' },
+ { value: newValue || '0', fromNumericBase: 'dec' },
{ value: max, fromNumericBase: 'hex' },
)
if (newValueGreaterThanMin && newValueLessThanMax) {
@@ -46,8 +53,8 @@ InputNumber.prototype.render = function () {
return h('div.customize-gas-input-wrapper', {}, [
h('input.customize-gas-input', {
placeholder,
- type: 'number',
value,
+ step,
onChange: (e) => this.setValue(e.target.value),
}),
h('span.gas-tooltip-input-detail', {}, [unitLabel]),
@@ -57,7 +64,7 @@ InputNumber.prototype.render = function () {
}),
h('i.fa.fa-angle-down', {
style: { cursor: 'pointer' },
- onClick: () => this.setValue(addCurrencies(value, toNegative(step))),
+ onClick: () => this.setValue(subtractCurrencies(value, step)),
}),
]),
])
diff --git a/ui/app/components/send/send-constants.js b/ui/app/components/send/send-constants.js
index 0a4f85bc9..a961ffcd8 100644
--- a/ui/app/components/send/send-constants.js
+++ b/ui/app/components/send/send-constants.js
@@ -11,6 +11,7 @@ const MIN_GAS_PRICE_GWEI = ethUtil.addHexPrefix(conversionUtil(MIN_GAS_PRICE_HEX
toDenomination: 'GWEI',
fromNumericBase: 'hex',
toNumericBase: 'hex',
+ numberOfDecimals: 1,
}))
const MIN_GAS_TOTAL = multiplyCurrencies(MIN_GAS_LIMIT_HEX, MIN_GAS_PRICE_HEX, {
diff --git a/ui/app/conversion-util.js b/ui/app/conversion-util.js
index 3786641fb..ee831262b 100644
--- a/ui/app/conversion-util.js
+++ b/ui/app/conversion-util.js
@@ -53,7 +53,7 @@ const toNormalizedDenomination = {
}
const toSpecifiedDenomination = {
WEI: bigNumber => bigNumber.times(BIG_NUMBER_WEI_MULTIPLIER).round(),
- GWEI: bigNumber => bigNumber.times(BIG_NUMBER_GWEI_MULTIPLIER).round(1),
+ GWEI: bigNumber => bigNumber.times(BIG_NUMBER_GWEI_MULTIPLIER).round(9),
}
const baseChange = {
hex: n => n.toString(16),