diff options
author | Thomas Huang <tmashuang@users.noreply.github.com> | 2017-11-29 03:58:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-29 03:58:06 +0800 |
commit | 2b1f2557c7dbd589724fd690ec72f789f9650e3c (patch) | |
tree | 44ad09f1b666dc6ddae0fdc0bc9823de9126bc18 /ui/app/components/identicon.js | |
parent | 9a3ca5d5022d30415b8f5b32b148293689cfc817 (diff) | |
parent | f131468353aa518b8fc178cd591bfc7ab5bdc32c (diff) | |
download | tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.tar tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.tar.gz tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.tar.bz2 tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.tar.lz tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.tar.xz tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.tar.zst tangerine-wallet-browser-2b1f2557c7dbd589724fd690ec72f789f9650e3c.zip |
Merge pull request #2615 from jpclark/NewUI-flat
Provide blockie identicon option
Diffstat (limited to 'ui/app/components/identicon.js')
-rw-r--r-- | ui/app/components/identicon.js | 67 |
1 files changed, 48 insertions, 19 deletions
diff --git a/ui/app/components/identicon.js b/ui/app/components/identicon.js index d30b7cd56..b803b7ceb 100644 --- a/ui/app/components/identicon.js +++ b/ui/app/components/identicon.js @@ -1,13 +1,15 @@ const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits +const connect = require('react-redux').connect const isNode = require('detect-node') const findDOMNode = require('react-dom').findDOMNode const jazzicon = require('jazzicon') const iconFactoryGen = require('../../lib/icon-factory') const iconFactory = iconFactoryGen(jazzicon) +const { toDataUrl } = require('../../lib/blockies') -module.exports = IdenticonComponent +module.exports = connect(mapStateToProps)(IdenticonComponent) inherits(IdenticonComponent, Component) function IdenticonComponent () { @@ -16,6 +18,12 @@ function IdenticonComponent () { this.defaultDiameter = 46 } +function mapStateToProps (state) { + return { + useBlockie: state.metamask.useBlockie, + } +} + IdenticonComponent.prototype.render = function () { var props = this.props const { className = '', address } = props @@ -51,38 +59,59 @@ IdenticonComponent.prototype.render = function () { IdenticonComponent.prototype.componentDidMount = function () { var props = this.props - const { address } = props + const { address, useBlockie } = props if (!address) return - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) - - var diameter = props.diameter || this.defaultDiameter if (!isNode) { - var img = iconFactory.iconForAddress(address, diameter) - container.appendChild(img) + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) + + const diameter = props.diameter || this.defaultDiameter + + if (useBlockie) { + _generateBlockie(container, address, diameter) + } else { + _generateJazzicon(container, address, diameter) + } } } IdenticonComponent.prototype.componentDidUpdate = function () { var props = this.props - const { address } = props + const { address, useBlockie } = props if (!address) return - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) + if (!isNode) { + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) - var children = container.children - for (var i = 0; i < children.length; i++) { - container.removeChild(children[i]) - } + var children = container.children + for (var i = 0; i < children.length; i++) { + container.removeChild(children[i]) + } - var diameter = props.diameter || this.defaultDiameter - if (!isNode) { - var img = iconFactory.iconForAddress(address, diameter) - container.appendChild(img) + const diameter = props.diameter || this.defaultDiameter + + if (useBlockie) { + _generateBlockie(container, address, diameter) + } else { + _generateJazzicon(container, address, diameter) + } } } +function _generateBlockie (container, address, diameter) { + const img = new Image() + img.src = toDataUrl(address) + const dia = !diameter || diameter < 50 ? 50 : diameter + img.height = dia * 1.25 + img.width = dia * 1.25 + container.appendChild(img) +} + +function _generateJazzicon (container, address, diameter) { + const img = iconFactory.iconForAddress(address, diameter) + container.appendChild(img) +} |