aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
diff options
context:
space:
mode:
authorDan Miller <danjm.com@gmail.com>2018-10-11 00:06:38 +0800
committerDan Miller <danjm.com@gmail.com>2018-12-04 11:36:05 +0800
commitcd32c58fb4bcd731d8a83d354c9b01a38c8df219 (patch)
tree7dc056bb06c71b2a691eccfbbcaf726bd60a98ed /ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
parenta2bbf504b891a63f32070961118ec1ae6fa5fdd8 (diff)
downloadtangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.tar
tangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.tar.gz
tangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.tar.bz2
tangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.tar.lz
tangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.tar.xz
tangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.tar.zst
tangerine-wallet-browser-cd32c58fb4bcd731d8a83d354c9b01a38c8df219.zip
Complete integration of gas chart with redux.
Diffstat (limited to 'ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js')
-rw-r--r--ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js31
1 files changed, 30 insertions, 1 deletions
diff --git a/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js b/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
index 84eae1880..3a62d21cc 100644
--- a/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
+++ b/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js
@@ -10,6 +10,7 @@ import {
setCustomGasPrice,
setCustomGasLimit,
resetCustomData,
+ setCustomTimeEstimate,
} from '../../../ducks/gas.duck'
import {
hideGasButtonGroup,
@@ -29,6 +30,7 @@ import {
getBasicGasEstimateLoadingStatus,
getAveragePriceEstimateInHexWEI,
getDefaultActiveButtonIndex,
+ formatTimeEstimate,
} from '../../../selectors/custom-gas'
import {
formatCurrency,
@@ -65,20 +67,24 @@ const mapStateToProps = state => {
const hideBasic = state.appState.modal.modalState.props.hideBasic
+ const customGasPrice = calcCustomGasPrice(customModalGasPriceInHex)
+
return {
hideBasic,
isConfirm: isConfirm(state),
customModalGasPriceInHex,
customModalGasLimitInHex,
- customGasPrice: calcCustomGasPrice(customModalGasPriceInHex),
+ customGasPrice,
customGasLimit: calcCustomGasLimit(customModalGasLimitInHex),
newTotalFiat,
+ currentTimeEstimate: getRenderableTimeEstimate(customGasPrice, state.gas.priceAndTimeEstimates),
gasPriceButtonGroupProps: {
buttonDataLoading,
defaultActiveButtonIndex: getDefaultActiveButtonIndex(gasButtonInfo, customModalGasPriceInHex),
gasButtonInfo,
},
gasChartProps: {
+ currentPrice: customGasPrice,
priceAndTimeEstimates: state.gas.priceAndTimeEstimates,
},
infoRowProps: {
@@ -111,6 +117,7 @@ const mapDispatchToProps = dispatch => {
return dispatch(updateGasAndCalculate({ gasLimit, gasPrice }))
},
hideGasButtonGroup: () => dispatch(hideGasButtonGroup()),
+ setCustomTimeEstimate: (timeEstimateInSeconds) => dispatch(setCustomTimeEstimate(timeEstimateInSeconds)),
}
}
@@ -181,3 +188,25 @@ function addHexWEIsToRenderableFiat (aHexWEI, bHexWEI, convertedCurrency, conver
partialRight(formatCurrency, [convertedCurrency]),
)(aHexWEI, bHexWEI)
}
+
+function getRenderableTimeEstimate (currentGasPrice, priceAndTimeEstimates) {
+ const gasPrices = priceAndTimeEstimates.map(({ gasprice }) => gasprice)
+ const estimatedTimes = priceAndTimeEstimates.map(({ expectedTime }) => expectedTime)
+
+ const closestLowerValueIndex = gasPrices.findIndex((e, i, a) => {
+ return e <= currentGasPrice && a[i + 1] >= currentGasPrice
+ })
+ const closestHigherValueIndex = gasPrices.findIndex((e, i, a) => {
+ return e > currentGasPrice
+ })
+
+ const closestLowerValue = gasPrices[closestLowerValueIndex]
+ const closestHigherValue = gasPrices[closestHigherValueIndex]
+ const estimatedClosestLowerTimeEstimate = estimatedTimes[closestLowerValueIndex]
+ const estimatedClosestHigherTimeEstimate = estimatedTimes[closestHigherValueIndex]
+
+ const slope = (estimatedClosestHigherTimeEstimate - estimatedClosestLowerTimeEstimate) / (closestHigherValue - closestLowerValue)
+ const newTimeEstimate = -1 * (slope * (closestHigherValue - currentGasPrice) - estimatedClosestHigherTimeEstimate)
+
+ return formatTimeEstimate(newTimeEstimate)
+}