aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/selectors
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/selectors')
-rw-r--r--ui/app/selectors/custom-gas.js94
-rw-r--r--ui/app/selectors/tests/custom-gas.test.js94
2 files changed, 105 insertions, 83 deletions
diff --git a/ui/app/selectors/custom-gas.js b/ui/app/selectors/custom-gas.js
index 1c577c1b4..f06fb710d 100644
--- a/ui/app/selectors/custom-gas.js
+++ b/ui/app/selectors/custom-gas.js
@@ -23,7 +23,9 @@ import { addHexPrefix } from 'ethereumjs-util'
const selectors = {
formatTimeEstimate,
getAveragePriceEstimateInHexWEI,
+ getFastPriceEstimateInHexWEI,
getBasicGasEstimateLoadingStatus,
+ getBasicGasEstimateBlockTime,
getCustomGasErrors,
getCustomGasLimit,
getCustomGasPrice,
@@ -33,7 +35,7 @@ const selectors = {
getEstimatedGasTimes,
getPriceAndTimeEstimates,
getRenderableBasicEstimateData,
- getRenderableEstimateDataForSmallButtons,
+ getRenderableEstimateDataForSmallButtonsFromGWEI,
priceEstimateToWei,
}
@@ -78,12 +80,21 @@ function getAveragePriceEstimateInHexWEI (state) {
return getGasPriceInHexWei(averagePriceEstimate || '0x0')
}
+function getFastPriceEstimateInHexWEI (state, convertFromDecGWEI) {
+ const fastPriceEstimate = state.gas.basicEstimates.fast
+ return getGasPriceInHexWei(fastPriceEstimate || '0x0', convertFromDecGWEI)
+}
+
function getDefaultActiveButtonIndex (gasButtonInfo, customGasPriceInHex, gasPrice) {
return gasButtonInfo.findIndex(({ priceInHexWei }) => {
return priceInHexWei === addHexPrefix(customGasPriceInHex || gasPrice)
})
}
+function getBasicGasEstimateBlockTime (state) {
+ return state.gas.basicEstimates.blockTime
+}
+
function apiEstimateModifiedToGWEI (estimate) {
return multiplyCurrencies(estimate, 0.10, {
toNumericBase: 'hex',
@@ -102,26 +113,34 @@ function basicPriceEstimateToETHTotal (estimate, gasLimit, numberOfDecimals = 9)
})
}
-function getRenderableEthFee (estimate, gasLimit, numberOfDecimals = 9) {
+function getRenderableEthFee (estimate, gasLimit, numberOfDecimals = 9, convertFromDecGWEI) {
+ const initialConversion = convertFromDecGWEI
+ ? x => conversionUtil(x, { fromNumericBase: 'dec', toNumericBase: 'hex' })
+ : apiEstimateModifiedToGWEI
+
return pipe(
- apiEstimateModifiedToGWEI,
+ initialConversion,
partialRight(basicPriceEstimateToETHTotal, [gasLimit, numberOfDecimals]),
formatETHFee
)(estimate, gasLimit)
}
-function getRenderableConvertedCurrencyFee (estimate, gasLimit, convertedCurrency, conversionRate) {
+function getRenderableConvertedCurrencyFee (estimate, gasLimit, convertedCurrency, conversionRate, convertFromDecGWEI) {
+ const initialConversion = convertFromDecGWEI
+ ? x => conversionUtil(x, { fromNumericBase: 'dec', toNumericBase: 'hex' })
+ : apiEstimateModifiedToGWEI
+
return pipe(
- apiEstimateModifiedToGWEI,
+ initialConversion,
partialRight(basicPriceEstimateToETHTotal, [gasLimit]),
partialRight(ethTotalToConvertedCurrency, [convertedCurrency, conversionRate]),
partialRight(formatCurrency, [convertedCurrency])
)(estimate, gasLimit, convertedCurrency, conversionRate)
}
-function getTimeEstimateInSeconds (blockWaitEstimate, currentBlockTime) {
- return multiplyCurrencies(blockWaitEstimate, currentBlockTime, {
+function getTimeEstimateInSeconds (blockWaitEstimate) {
+ return multiplyCurrencies(blockWaitEstimate, 60, {
toNumericBase: 'dec',
multiplicandBase: 10,
multiplierBase: 10,
@@ -141,11 +160,11 @@ function formatTimeEstimate (totalSeconds) {
return formattedCombined
}
-function getRenderableTimeEstimate (blockWaitEstimate, currentBlockTime) {
+function getRenderableTimeEstimate (blockWaitEstimate) {
return pipe(
getTimeEstimateInSeconds,
formatTimeEstimate
- )(blockWaitEstimate, currentBlockTime)
+ )(blockWaitEstimate)
}
function priceEstimateToWei (priceEstimate) {
@@ -158,9 +177,13 @@ function priceEstimateToWei (priceEstimate) {
})
}
-function getGasPriceInHexWei (price) {
+function getGasPriceInHexWei (price, convertFromDecGWEI) {
+ const initialConversion = convertFromDecGWEI
+ ? x => conversionUtil(x, { fromNumericBase: 'dec', toNumericBase: 'hex' })
+ : apiEstimateModifiedToGWEI
+
return pipe(
- apiEstimateModifiedToGWEI,
+ initialConversion,
priceEstimateToWei,
addHexPrefix
)(price)
@@ -177,11 +200,10 @@ function getRenderableBasicEstimateData (state) {
gas: {
basicEstimates: {
safeLow,
- average,
fast,
- blockTime,
+ fastest,
safeLowWait,
- avgWait,
+ fastestWait,
fastWait,
},
},
@@ -190,29 +212,29 @@ function getRenderableBasicEstimateData (state) {
return [
{
labelKey: 'fastest',
- feeInPrimaryCurrency: getRenderableConvertedCurrencyFee(fast, gasLimit, currentCurrency, conversionRate),
- feeInSecondaryCurrency: getRenderableEthFee(fast, gasLimit),
- timeEstimate: getRenderableTimeEstimate(fastWait, blockTime),
- priceInHexWei: getGasPriceInHexWei(fast),
+ feeInPrimaryCurrency: getRenderableConvertedCurrencyFee(fastest, gasLimit, currentCurrency, conversionRate),
+ feeInSecondaryCurrency: getRenderableEthFee(fastest, gasLimit),
+ timeEstimate: fastestWait && getRenderableTimeEstimate(fastestWait),
+ priceInHexWei: getGasPriceInHexWei(fastest),
},
{
labelKey: 'fast',
- feeInPrimaryCurrency: getRenderableConvertedCurrencyFee(average, gasLimit, currentCurrency, conversionRate),
- feeInSecondaryCurrency: getRenderableEthFee(average, gasLimit),
- timeEstimate: getRenderableTimeEstimate(avgWait, blockTime),
- priceInHexWei: getGasPriceInHexWei(average),
+ feeInPrimaryCurrency: getRenderableConvertedCurrencyFee(fast, gasLimit, currentCurrency, conversionRate),
+ feeInSecondaryCurrency: getRenderableEthFee(fast, gasLimit),
+ timeEstimate: fastWait && getRenderableTimeEstimate(fastWait),
+ priceInHexWei: getGasPriceInHexWei(fast),
},
{
labelKey: 'slow',
feeInPrimaryCurrency: getRenderableConvertedCurrencyFee(safeLow, gasLimit, currentCurrency, conversionRate),
feeInSecondaryCurrency: getRenderableEthFee(safeLow, gasLimit),
- timeEstimate: getRenderableTimeEstimate(safeLowWait, blockTime),
+ timeEstimate: safeLowWait && getRenderableTimeEstimate(safeLowWait),
priceInHexWei: getGasPriceInHexWei(safeLow),
},
]
}
-function getRenderableEstimateDataForSmallButtons (state) {
+function getRenderableEstimateDataForSmallButtonsFromGWEI (state) {
if (getBasicGasEstimateLoadingStatus(state)) {
return []
}
@@ -223,30 +245,30 @@ function getRenderableEstimateDataForSmallButtons (state) {
gas: {
basicEstimates: {
safeLow,
- average,
fast,
+ fastest,
},
},
} = state
return [
{
- labelKey: 'fast',
- feeInSecondaryCurrency: getRenderableConvertedCurrencyFee(fast, gasLimit, currentCurrency, conversionRate),
- feeInPrimaryCurrency: getRenderableEthFee(fast, gasLimit, NUMBER_OF_DECIMALS_SM_BTNS),
- priceInHexWei: getGasPriceInHexWei(fast),
+ labelKey: 'fastest',
+ feeInSecondaryCurrency: getRenderableConvertedCurrencyFee(fastest, gasLimit, currentCurrency, conversionRate, true),
+ feeInPrimaryCurrency: getRenderableEthFee(fastest, gasLimit, NUMBER_OF_DECIMALS_SM_BTNS, true),
+ priceInHexWei: getGasPriceInHexWei(fastest, true),
},
{
- labelKey: 'average',
- feeInSecondaryCurrency: getRenderableConvertedCurrencyFee(average, gasLimit, currentCurrency, conversionRate),
- feeInPrimaryCurrency: getRenderableEthFee(average, gasLimit, NUMBER_OF_DECIMALS_SM_BTNS),
- priceInHexWei: getGasPriceInHexWei(average),
+ labelKey: 'fast',
+ feeInSecondaryCurrency: getRenderableConvertedCurrencyFee(fast, gasLimit, currentCurrency, conversionRate, true),
+ feeInPrimaryCurrency: getRenderableEthFee(fast, gasLimit, NUMBER_OF_DECIMALS_SM_BTNS, true),
+ priceInHexWei: getGasPriceInHexWei(fast, true),
},
{
labelKey: 'slow',
- feeInSecondaryCurrency: getRenderableConvertedCurrencyFee(safeLow, gasLimit, currentCurrency, conversionRate),
- feeInPrimaryCurrency: getRenderableEthFee(safeLow, gasLimit, NUMBER_OF_DECIMALS_SM_BTNS),
- priceInHexWei: getGasPriceInHexWei(safeLow),
+ feeInSecondaryCurrency: getRenderableConvertedCurrencyFee(safeLow, gasLimit, currentCurrency, conversionRate, true),
+ feeInPrimaryCurrency: getRenderableEthFee(safeLow, gasLimit, NUMBER_OF_DECIMALS_SM_BTNS, true),
+ priceInHexWei: getGasPriceInHexWei(safeLow, true),
},
]
}
diff --git a/ui/app/selectors/tests/custom-gas.test.js b/ui/app/selectors/tests/custom-gas.test.js
index 8a6e7e351..037b1e86e 100644
--- a/ui/app/selectors/tests/custom-gas.test.js
+++ b/ui/app/selectors/tests/custom-gas.test.js
@@ -10,7 +10,7 @@ const {
getEstimatedGasTimes,
getPriceAndTimeEstimates,
getRenderableBasicEstimateData,
- getRenderableEstimateDataForSmallButtons,
+ getRenderableEstimateDataForSmallButtonsFromGWEI,
} = proxyquire('../custom-gas', {})
describe('custom-gas selectors', () => {
@@ -80,21 +80,21 @@ describe('custom-gas selectors', () => {
labelKey: 'fastest',
feeInPrimaryCurrency: '$0.05',
feeInSecondaryCurrency: '0.00021 ETH',
- timeEstimate: '~7 sec',
+ timeEstimate: '~30 sec',
priceInHexWei: '0x2540be400',
},
{
labelKey: 'fast',
feeInPrimaryCurrency: '$0.03',
feeInSecondaryCurrency: '0.000105 ETH',
- timeEstimate: '~46 sec',
+ timeEstimate: '~3 min 18 sec',
priceInHexWei: '0x12a05f200',
},
{
labelKey: 'slow',
feeInPrimaryCurrency: '$0.01',
feeInSecondaryCurrency: '0.0000525 ETH',
- timeEstimate: '~1 min 33 sec',
+ timeEstimate: '~6 min 36 sec',
priceInHexWei: '0x9502f900',
},
],
@@ -111,10 +111,10 @@ describe('custom-gas selectors', () => {
blockTime: 14.16326530612245,
safeLow: 25,
safeLowWait: 6.6,
- average: 50,
- avgWait: 3.3,
- fast: 100,
- fastWait: 0.5,
+ fast: 50,
+ fastWait: 3.3,
+ fastest: 100,
+ fastestWait: 0.5,
},
},
},
@@ -125,21 +125,21 @@ describe('custom-gas selectors', () => {
labelKey: 'fastest',
feeInPrimaryCurrency: '$1.07',
feeInSecondaryCurrency: '0.00042 ETH',
- timeEstimate: '~14 sec',
+ timeEstimate: '~1 min',
priceInHexWei: '0x4a817c800',
},
{
labelKey: 'fast',
feeInPrimaryCurrency: '$0.54',
feeInSecondaryCurrency: '0.00021 ETH',
- timeEstimate: '~1 min 33 sec',
+ timeEstimate: '~6 min 36 sec',
priceInHexWei: '0x2540be400',
},
{
labelKey: 'slow',
feeInPrimaryCurrency: '$0.27',
feeInSecondaryCurrency: '0.000105 ETH',
- timeEstimate: '~3 min 7 sec',
+ timeEstimate: '~13 min 12 sec',
priceInHexWei: '0x12a05f200',
},
],
@@ -156,10 +156,10 @@ describe('custom-gas selectors', () => {
blockTime: 14.16326530612245,
safeLow: 50,
safeLowWait: 13.2,
- average: 100,
- avgWait: 6.6,
- fast: 200,
- fastWait: 1.0,
+ fast: 100,
+ fastWait: 6.6,
+ fastest: 200,
+ fastestWait: 1.0,
},
},
},
@@ -176,27 +176,27 @@ describe('custom-gas selectors', () => {
})
- describe('getRenderableEstimateDataForSmallButtons()', () => {
+ describe('getRenderableEstimateDataForSmallButtonsFromGWEI()', () => {
const tests = [
{
expectedResult: [
{
- feeInSecondaryCurrency: '$0.05',
- feeInPrimaryCurrency: '0.00021 ETH',
- labelKey: 'fast',
- priceInHexWei: '0x2540be400',
+ feeInSecondaryCurrency: '$0.54',
+ feeInPrimaryCurrency: '0.0021 ETH',
+ labelKey: 'fastest',
+ priceInHexWei: '0x174876e800',
},
{
- feeInSecondaryCurrency: '$0.03',
- feeInPrimaryCurrency: '0.0001 ETH',
- labelKey: 'average',
- priceInHexWei: '0x12a05f200',
+ feeInSecondaryCurrency: '$0.27',
+ feeInPrimaryCurrency: '0.00105 ETH',
+ labelKey: 'fast',
+ priceInHexWei: '0xba43b7400',
},
{
- feeInSecondaryCurrency: '$0.01',
- feeInPrimaryCurrency: '0.00005 ETH',
+ feeInSecondaryCurrency: '$0.13',
+ feeInPrimaryCurrency: '0.00052 ETH',
labelKey: 'slow',
- priceInHexWei: '0x9502f900',
+ priceInHexWei: '0x5d21dba00',
},
],
mockState: {
@@ -212,10 +212,10 @@ describe('custom-gas selectors', () => {
blockTime: 14.16326530612245,
safeLow: 25,
safeLowWait: 6.6,
- average: 50,
- avgWait: 3.3,
- fast: 100,
- fastWait: 0.5,
+ fast: 50,
+ fastWait: 3.3,
+ fastest: 100,
+ fastestWait: 0.5,
},
},
},
@@ -223,22 +223,22 @@ describe('custom-gas selectors', () => {
{
expectedResult: [
{
- feeInSecondaryCurrency: '$1.07',
- feeInPrimaryCurrency: '0.00042 ETH',
- labelKey: 'fast',
- priceInHexWei: '0x4a817c800',
+ feeInSecondaryCurrency: '$10.74',
+ feeInPrimaryCurrency: '0.0042 ETH',
+ labelKey: 'fastest',
+ priceInHexWei: '0x2e90edd000',
},
{
- feeInSecondaryCurrency: '$0.54',
- feeInPrimaryCurrency: '0.00021 ETH',
- labelKey: 'average',
- priceInHexWei: '0x2540be400',
+ feeInSecondaryCurrency: '$5.37',
+ feeInPrimaryCurrency: '0.0021 ETH',
+ labelKey: 'fast',
+ priceInHexWei: '0x174876e800',
},
{
- feeInSecondaryCurrency: '$0.27',
- feeInPrimaryCurrency: '0.0001 ETH',
+ feeInSecondaryCurrency: '$2.68',
+ feeInPrimaryCurrency: '0.00105 ETH',
labelKey: 'slow',
- priceInHexWei: '0x12a05f200',
+ priceInHexWei: '0xba43b7400',
},
],
mockState: {
@@ -254,10 +254,10 @@ describe('custom-gas selectors', () => {
blockTime: 14.16326530612245,
safeLow: 50,
safeLowWait: 13.2,
- average: 100,
- avgWait: 6.6,
- fast: 200,
- fastWait: 1.0,
+ fast: 100,
+ fastWait: 6.6,
+ fastest: 200,
+ fastestWait: 1.0,
},
},
},
@@ -266,7 +266,7 @@ describe('custom-gas selectors', () => {
it('should return renderable data about basic estimates appropriate for buttons with less info', () => {
tests.forEach(test => {
assert.deepEqual(
- getRenderableEstimateDataForSmallButtons(test.mockState),
+ getRenderableEstimateDataForSmallButtonsFromGWEI(test.mockState),
test.expectedResult
)
})