diff options
author | Dan Finlay <542863+danfinlay@users.noreply.github.com> | 2018-02-22 07:46:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-22 07:46:31 +0800 |
commit | eed75735b8e90d121537249cf147c1ece60f1e47 (patch) | |
tree | c7cfc9bea782df7035761caa8c1809d8fde58824 /ui/app/components/send/currency-display.js | |
parent | 16754fa30744df8b3b3edc0e5229db29f3ad23ec (diff) | |
parent | e27a3823ba2595baa7c3378e6a6f2aa5dae30250 (diff) | |
download | tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.tar tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.tar.gz tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.tar.bz2 tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.tar.lz tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.tar.xz tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.tar.zst tangerine-wallet-browser-eed75735b8e90d121537249cf147c1ece60f1e47.zip |
Merge pull request #3050 from MetaMask/uat
[EPIC] Merge UAT into master
Diffstat (limited to 'ui/app/components/send/currency-display.js')
-rw-r--r-- | ui/app/components/send/currency-display.js | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/ui/app/components/send/currency-display.js b/ui/app/components/send/currency-display.js new file mode 100644 index 000000000..819fee0a0 --- /dev/null +++ b/ui/app/components/send/currency-display.js @@ -0,0 +1,116 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const CurrencyInput = require('../currency-input') +const { conversionUtil, multiplyCurrencies } = require('../../conversion-util') + +module.exports = CurrencyDisplay + +inherits(CurrencyDisplay, Component) +function CurrencyDisplay () { + Component.call(this) +} + +function toHexWei (value) { + return conversionUtil(value, { + fromNumericBase: 'dec', + toNumericBase: 'hex', + toDenomination: 'WEI', + }) +} + +CurrencyDisplay.prototype.getAmount = function (value) { + const { selectedToken } = this.props + const { decimals } = selectedToken || {} + const multiplier = Math.pow(10, Number(decimals || 0)) + + const sendAmount = multiplyCurrencies(value, multiplier, {toNumericBase: 'hex'}) + + return selectedToken + ? sendAmount + : toHexWei(value) +} + +CurrencyDisplay.prototype.getValueToRender = function () { + const { selectedToken, conversionRate, value } = this.props + + const { decimals, symbol } = selectedToken || {} + const multiplier = Math.pow(10, Number(decimals || 0)) + + return selectedToken + ? conversionUtil(value, { + fromNumericBase: 'hex', + toCurrency: symbol, + conversionRate: multiplier, + invertConversionRate: true, + }) + : conversionUtil(value, { + fromNumericBase: 'hex', + toNumericBase: 'dec', + fromDenomination: 'WEI', + numberOfDecimals: 6, + conversionRate, + }) +} + +CurrencyDisplay.prototype.render = function () { + const { + className = 'currency-display', + primaryBalanceClassName = 'currency-display__input', + convertedBalanceClassName = 'currency-display__converted-value', + conversionRate, + primaryCurrency, + convertedCurrency, + readOnly = false, + inError = false, + handleChange, + } = this.props + + const valueToRender = this.getValueToRender() + + let convertedValue = conversionUtil(valueToRender, { + fromNumericBase: 'dec', + fromCurrency: primaryCurrency, + toCurrency: convertedCurrency, + numberOfDecimals: 2, + conversionRate, + }) + convertedValue = Number(convertedValue).toFixed(2) + + return h('div', { + className, + style: { + borderColor: inError ? 'red' : null, + }, + onClick: () => this.currencyInput.focus(), + }, [ + + h('div.currency-display__primary-row', [ + + h('div.currency-display__input-wrapper', [ + + h(CurrencyInput, { + className: primaryBalanceClassName, + value: `${valueToRender}`, + placeholder: '0', + readOnly, + onInputChange: newValue => { + handleChange(this.getAmount(newValue)) + }, + inputRef: input => { this.currencyInput = input }, + }), + + h('span.currency-display__currency-symbol', primaryCurrency), + + ]), + + ]), + + h('div', { + className: convertedBalanceClassName, + }, `${convertedValue} ${convertedCurrency.toUpperCase()}`), + + ]) + +} + |