aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/hex-as-decimal-input.js
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2017-02-18 04:44:09 +0800
committerDan Finlay <dan@danfinlay.com>2017-02-18 04:46:08 +0800
commit6b56d6ba9853ec978cd2d3d030882fa5ee3645cd (patch)
tree5041705ddb10ed51776bf75f6df6c8709df5893d /ui/app/components/hex-as-decimal-input.js
parent89af0ef408eb62b7af5e05167f210d6563ef0f43 (diff)
downloadtangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.tar
tangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.tar.gz
tangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.tar.bz2
tangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.tar.lz
tangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.tar.xz
tangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.tar.zst
tangerine-wallet-browser-6b56d6ba9853ec978cd2d3d030882fa5ee3645cd.zip
Broke hex decimal input into its own component
Also added a new state to try to make UI dev mode work again, but it has other issues, like #1128, that need to be addressed before UI dev mode can be used again.
Diffstat (limited to 'ui/app/components/hex-as-decimal-input.js')
-rw-r--r--ui/app/components/hex-as-decimal-input.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/ui/app/components/hex-as-decimal-input.js b/ui/app/components/hex-as-decimal-input.js
new file mode 100644
index 000000000..4d3105b8d
--- /dev/null
+++ b/ui/app/components/hex-as-decimal-input.js
@@ -0,0 +1,49 @@
+const Component = require('react').Component
+const h = require('react-hyperscript')
+const inherits = require('util').inherits
+const ethUtil = require('ethereumjs-util')
+const BN = ethUtil.BN
+
+module.exports = HexAsDecimalInput
+
+inherits(HexAsDecimalInput, Component)
+function HexAsDecimalInput () {
+ Component.call(this)
+}
+
+/* Hex as Decimal Input
+ *
+ * A component for allowing easy, decimal editing
+ * of a passed in hex string value.
+ *
+ * On change, calls back its `onChange` function parameter
+ * and passes it an updated hex string.
+ */
+
+HexAsDecimalInput.prototype.render = function () {
+ const props = this.props
+ const { value, onChange } = props
+ const decimalValue = decimalize(value)
+
+ return (
+ h('input', {
+ value: decimalValue,
+ onChange: (event) => {
+ const hexString = hexify(event.target.value)
+ onChange(hexString)
+ },
+ })
+ )
+}
+
+function hexify (decimalString) {
+ const hexBN = new BN(decimalString, 10)
+ return '0x' + hexBN.toString('hex')
+}
+
+function decimalize (input) {
+ const strippedInput = ethUtil.stripHexPrefix(input)
+ const inputBN = new BN(strippedInput, 'hex')
+ return inputBN.toString(10)
+}
+