aboutsummaryrefslogtreecommitdiffstats
path: root/ui/lib/icon-factory.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/lib/icon-factory.js')
-rw-r--r--ui/lib/icon-factory.js63
1 files changed, 22 insertions, 41 deletions
diff --git a/ui/lib/icon-factory.js b/ui/lib/icon-factory.js
index ac703ae40..4ee6b600b 100644
--- a/ui/lib/icon-factory.js
+++ b/ui/lib/icon-factory.js
@@ -1,4 +1,7 @@
var iconFactory
+const isValidAddress = require('ethereumjs-util').isValidAddress
+const toChecksumAddress = require('ethereumjs-util').toChecksumAddress
+const contractMap = require('eth-contract-metadata')
module.exports = function (jazzicon) {
if (!iconFactory) {
@@ -10,48 +13,15 @@ module.exports = function (jazzicon) {
function IconFactory (jazzicon) {
this.jazzicon = jazzicon
this.cache = {}
-
- this.presets = {
- '1':{ // Main network:
- '0x48c80f1f4d53d5951e5d5438b54cba84f29f32a5': 'https://etherscan.io/token/images/augur.png',
- '0xc66ea802717bfb9833400264dd12c2bceaa34a6d': 'https://etherscan.io/token/images/mkr-etherscan-35.png',
- '0xa74476443119a942de498590fe1f2454d7d4ac0d': 'https://etherscan.io/token/images/golem.png',
- '0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009': 'https://etherscan.io/token/images/sngls.png',
-
- }
- }
}
-IconFactory.prototype.iconForAddress = function (address, diameter, imageify, network) {
-
- try {
- const presetUri = this.presets[network][address.toLowerCase()]
- if (presetUri) {
- var img = document.createElement('img')
- img.src = presetUri
- img.style.width = `${diameter}px`
- img.style.height = `${diameter}px`
- img.style.borderRadius = `${diameter/2}px`
- return img
- }
- } catch (e) {}
-
-
- if (imageify) {
- return this.generateIdenticonImg(address, diameter)
- } else {
- return this.generateIdenticonSvg(address, diameter)
+IconFactory.prototype.iconForAddress = function (address, diameter) {
+ const addr = toChecksumAddress(address)
+ if (iconExistsFor(addr)) {
+ return imageElFor(addr)
}
-}
-// returns img dom element
-IconFactory.prototype.generateIdenticonImg = function (address, diameter) {
- var identicon = this.generateIdenticonSvg(address, diameter)
- var identiconSrc = identicon.innerHTML
- var dataUri = toDataUri(identiconSrc)
- var img = document.createElement('img')
- img.src = dataUri
- return img
+ return this.generateIdenticonSvg(address, diameter)
}
// returns svg dom element
@@ -73,12 +43,23 @@ IconFactory.prototype.generateNewIdenticon = function (address, diameter) {
// util
+function iconExistsFor (address) {
+ return (contractMap.address) && isValidAddress(address) && (contractMap[address].logo)
+}
+
+function imageElFor (address) {
+ const contract = contractMap[address]
+ const fileName = contract.logo
+ const path = `images/contract/${fileName}`
+ const img = document.createElement('img')
+ img.src = path
+ img.style.width = '100%'
+ return img
+}
+
function jsNumberForAddress (address) {
var addr = address.slice(2, 10)
var seed = parseInt(addr, 16)
return seed
}
-function toDataUri (identiconSrc) {
- return 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(identiconSrc)
-}