From c00544de91caec4d76f34aeaf91f025292ae0384 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Wed, 22 Mar 2017 16:02:17 -0400 Subject: Add conditional kovan logic to etherscan link generators. --- ui/lib/account-link.js | 4 +++- ui/lib/explorer-link.js | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'ui/lib') diff --git a/ui/lib/account-link.js b/ui/lib/account-link.js index 77db0851d..948f32da1 100644 --- a/ui/lib/account-link.js +++ b/ui/lib/account-link.js @@ -1,7 +1,6 @@ module.exports = function (address, network) { const net = parseInt(network) let link - switch (net) { case 1: // main net link = `http://etherscan.io/address/${address}` @@ -12,6 +11,9 @@ module.exports = function (address, network) { case 3: // ropsten test net link = `http://testnet.etherscan.io/address/${address}` break + case 42: // kovan test net + link = `http://kovan.etherscan.io/address/${address}` + break default: link = '' break diff --git a/ui/lib/explorer-link.js b/ui/lib/explorer-link.js index dc6be2984..7ae19cca0 100644 --- a/ui/lib/explorer-link.js +++ b/ui/lib/explorer-link.js @@ -5,9 +5,12 @@ module.exports = function (hash, network) { case 1: // main net prefix = '' break - case 3: // morden test net + case 3: // ropsten test net prefix = 'testnet.' break + case 42: // kovan test net + prefix = 'kovan.' + break default: prefix = '' } -- cgit v1.2.3 From bd4a68531bc915e70964e28002c3a59d85853dfa Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 27 Mar 2017 10:55:40 -0700 Subject: block explorer - account link - ropsten etherscan differentiates between "attacked ropsten" vs "revived ropsten" https://ropsten.etherscan.io/ is the revived ropsten --- ui/lib/account-link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/account-link.js b/ui/lib/account-link.js index 948f32da1..4f27b35c0 100644 --- a/ui/lib/account-link.js +++ b/ui/lib/account-link.js @@ -9,7 +9,7 @@ module.exports = function (address, network) { link = `http://morden.etherscan.io/address/${address}` break case 3: // ropsten test net - link = `http://testnet.etherscan.io/address/${address}` + link = `http://ropsten.etherscan.io/address/${address}` break case 42: // kovan test net link = `http://kovan.etherscan.io/address/${address}` -- cgit v1.2.3 From dca4486a651a19c72203219effd54b14ad989a90 Mon Sep 17 00:00:00 2001 From: kumavis Date: Mon, 27 Mar 2017 10:57:04 -0700 Subject: block explorer - ropsten etherscan differentiates between "attacked ropsten" vs "revived ropsten" https://ropsten.etherscan.io/ is the revived ropsten --- ui/lib/explorer-link.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/explorer-link.js b/ui/lib/explorer-link.js index 7ae19cca0..ca89f8b25 100644 --- a/ui/lib/explorer-link.js +++ b/ui/lib/explorer-link.js @@ -6,7 +6,7 @@ module.exports = function (hash, network) { prefix = '' break case 3: // ropsten test net - prefix = 'testnet.' + prefix = 'ropsten.' break case 42: // kovan test net prefix = 'kovan.' -- cgit v1.2.3 From 0d20b548544c284fb6338dc55cf0c864f3a08b14 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Tue, 28 Mar 2017 14:23:01 -0700 Subject: Detect tx network from txMeta --- ui/lib/tx-helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/tx-helper.js b/ui/lib/tx-helper.js index 2eefdff68..6c549dbe3 100644 --- a/ui/lib/tx-helper.js +++ b/ui/lib/tx-helper.js @@ -4,7 +4,7 @@ module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, network) log.debug('tx-helper called with params:') log.debug({ unapprovedTxs, unapprovedMsgs, personalMsgs, network }) - const txValues = network ? valuesFor(unapprovedTxs).filter(tx => tx.txParams.metamaskNetworkId === network) : valuesFor(unapprovedTxs) + const txValues = network ? valuesFor(unapprovedTxs).filter(tx => tx.metamaskNetworkId === network) : valuesFor(unapprovedTxs) log.debug(`tx helper found ${txValues.length} unapproved txs`) const msgValues = valuesFor(unapprovedMsgs) log.debug(`tx helper found ${msgValues.length} unsigned messages`) -- cgit v1.2.3 From 067459da4c005ef89cc1ef4103b557e81e8927d7 Mon Sep 17 00:00:00 2001 From: kumavis Date: Tue, 28 Mar 2017 14:39:45 -0700 Subject: Filter txs by txMeta network value in account detail --- ui/lib/tx-helper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ui/lib') diff --git a/ui/lib/tx-helper.js b/ui/lib/tx-helper.js index 6c549dbe3..ec19daf64 100644 --- a/ui/lib/tx-helper.js +++ b/ui/lib/tx-helper.js @@ -4,7 +4,7 @@ module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, network) log.debug('tx-helper called with params:') log.debug({ unapprovedTxs, unapprovedMsgs, personalMsgs, network }) - const txValues = network ? valuesFor(unapprovedTxs).filter(tx => tx.metamaskNetworkId === network) : valuesFor(unapprovedTxs) + const txValues = network ? valuesFor(unapprovedTxs).filter(txMeta => txMeta.metamaskNetworkId === network) : valuesFor(unapprovedTxs) log.debug(`tx helper found ${txValues.length} unapproved txs`) const msgValues = valuesFor(unapprovedMsgs) log.debug(`tx helper found ${msgValues.length} unsigned messages`) @@ -13,5 +13,5 @@ module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, network) log.debug(`tx helper found ${personalValues.length} unsigned personal messages`) allValues = allValues.concat(personalValues) - return allValues.sort(tx => tx.time) + return allValues.sort(txMeta => txMeta.time) } -- cgit v1.2.3 From 242dc1e99f1dd53e2bec9deefb5da0c8329b5f00 Mon Sep 17 00:00:00 2001 From: Kevin Serrano Date: Tue, 25 Apr 2017 14:39:01 -0700 Subject: Add missing changes. Create unique style for rinkeby icon. --- ui/lib/account-link.js | 3 +++ ui/lib/explorer-link.js | 3 +++ 2 files changed, 6 insertions(+) (limited to 'ui/lib') diff --git a/ui/lib/account-link.js b/ui/lib/account-link.js index 4f27b35c0..d061d0ad1 100644 --- a/ui/lib/account-link.js +++ b/ui/lib/account-link.js @@ -11,6 +11,9 @@ module.exports = function (address, network) { case 3: // ropsten test net link = `http://ropsten.etherscan.io/address/${address}` break + case 4: // rinkeby test net + link = `http://rinkeby.etherscan.io/address/${address}` + break case 42: // kovan test net link = `http://kovan.etherscan.io/address/${address}` break diff --git a/ui/lib/explorer-link.js b/ui/lib/explorer-link.js index ca89f8b25..e11249551 100644 --- a/ui/lib/explorer-link.js +++ b/ui/lib/explorer-link.js @@ -8,6 +8,9 @@ module.exports = function (hash, network) { case 3: // ropsten test net prefix = 'ropsten.' break + case 4: // rinkeby test net + prefix = 'rinkeby.' + break case 42: // kovan test net prefix = 'kovan.' break -- cgit v1.2.3 From d8c94fca75ca2aed11387c0b1d4c6064bead447e Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 00:19:24 -0700 Subject: Add address image map to icon factory Deriving from the new address image map repository I've added here: https://github.com/MetaMask/ethereum-contract-icons With this PR, images for addresses added to that repository will be shown instead of jazzicons in MetaMask. --- ui/lib/icon-factory.js | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'ui/lib') diff --git a/ui/lib/icon-factory.js b/ui/lib/icon-factory.js index 82cc839d6..4aed9109b 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 iconMap = require('ethereum-contract-icons') module.exports = function (jazzicon) { if (!iconFactory) { @@ -12,22 +15,12 @@ function IconFactory (jazzicon) { this.cache = {} } -IconFactory.prototype.iconForAddress = function (address, diameter, imageify) { - 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 @@ -49,12 +42,22 @@ IconFactory.prototype.generateNewIdenticon = function (address, diameter) { // util +function iconExistsFor (address) { + return (address in iconMap) && isValidAddress(address) +} + +function imageElFor (address) { + const fileName = iconMap[address] + 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) -} -- cgit v1.2.3 From f06ad954b900aa94a36fbb3e4765d0a9222e0920 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 09:58:33 -0700 Subject: Move to eth-contract-metadata --- ui/lib/icon-factory.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'ui/lib') diff --git a/ui/lib/icon-factory.js b/ui/lib/icon-factory.js index 4aed9109b..c16507527 100644 --- a/ui/lib/icon-factory.js +++ b/ui/lib/icon-factory.js @@ -1,7 +1,7 @@ var iconFactory const isValidAddress = require('ethereumjs-util').isValidAddress const toChecksumAddress = require('ethereumjs-util').toChecksumAddress -const iconMap = require('ethereum-contract-icons') +const contractMap = require('eth-contract-metadata') module.exports = function (jazzicon) { if (!iconFactory) { @@ -43,11 +43,12 @@ IconFactory.prototype.generateNewIdenticon = function (address, diameter) { // util function iconExistsFor (address) { - return (address in iconMap) && isValidAddress(address) + return (address in contractMap) && isValidAddress(address) && ('logo' in contractMap[address]) } function imageElFor (address) { - const fileName = iconMap[address] + const contract = contractMap[address] + const fileName = contract.logo const path = `images/contract/${fileName}` const img = document.createElement('img') img.src = path -- cgit v1.2.3 From 1203bd15c2861332b62e4a39a3d961f61daed6dc Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 10:25:00 -0700 Subject: Add names to contract map & conf view --- ui/lib/contract-namer.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'ui/lib') diff --git a/ui/lib/contract-namer.js b/ui/lib/contract-namer.js index a94c62b62..0800ee7df 100644 --- a/ui/lib/contract-namer.js +++ b/ui/lib/contract-namer.js @@ -6,13 +6,18 @@ */ // Nickname keys must be stored in lower case. -const nicknames = {} +const contractMap = require('eth-contract-metadata') +const ethUtil = require('ethereumjs-util') module.exports = function (addr, identities = {}) { + const checksummed = ethUtil.toChecksumAddress(addr) + if (checksummed in contractMap && 'name' in contractMap[checksummed]) { + return contractMap[checksummed].name + } + const address = addr.toLowerCase() const ids = hashFromIdentities(identities) - - return addrFromHash(address, ids) || addrFromHash(address, nicknames) + return addrFromHash(address, ids) } function hashFromIdentities (identities) { -- cgit v1.2.3 From 5e6b23082147f530adbf52cacf61202d7edf1111 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 10:54:16 -0700 Subject: Move off in operator --- ui/lib/contract-namer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/contract-namer.js b/ui/lib/contract-namer.js index 0800ee7df..2400fa576 100644 --- a/ui/lib/contract-namer.js +++ b/ui/lib/contract-namer.js @@ -11,7 +11,7 @@ const ethUtil = require('ethereumjs-util') module.exports = function (addr, identities = {}) { const checksummed = ethUtil.toChecksumAddress(addr) - if (checksummed in contractMap && 'name' in contractMap[checksummed]) { + if (contractMap.checksummed && contractMap[checksummed].name) { return contractMap[checksummed].name } -- cgit v1.2.3 From fd42d7bfd5cede30f14e232b6d93ba4205dbcf1d Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 11:05:51 -0700 Subject: Fix contract map reference --- ui/lib/contract-namer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/contract-namer.js b/ui/lib/contract-namer.js index 2400fa576..86bba1edc 100644 --- a/ui/lib/contract-namer.js +++ b/ui/lib/contract-namer.js @@ -11,7 +11,7 @@ const ethUtil = require('ethereumjs-util') module.exports = function (addr, identities = {}) { const checksummed = ethUtil.toChecksumAddress(addr) - if (contractMap.checksummed && contractMap[checksummed].name) { + if (contractMap[checksummed] && contractMap[checksummed].name) { return contractMap[checksummed].name } -- cgit v1.2.3 From fb2565c9d1f6c3cc6601c0f317fe10651ad21097 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 11:13:39 -0700 Subject: Remove comment --- ui/lib/contract-namer.js | 1 - 1 file changed, 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/contract-namer.js b/ui/lib/contract-namer.js index 86bba1edc..f05e770cc 100644 --- a/ui/lib/contract-namer.js +++ b/ui/lib/contract-namer.js @@ -5,7 +5,6 @@ * otherwise returns null. */ -// Nickname keys must be stored in lower case. const contractMap = require('eth-contract-metadata') const ethUtil = require('ethereumjs-util') -- cgit v1.2.3 From 9d2844c7128c79314529e163b473353d42200e9c Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 26 May 2017 11:16:58 -0700 Subject: remove more in operators --- ui/lib/icon-factory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ui/lib') diff --git a/ui/lib/icon-factory.js b/ui/lib/icon-factory.js index c16507527..45be47b7a 100644 --- a/ui/lib/icon-factory.js +++ b/ui/lib/icon-factory.js @@ -43,7 +43,7 @@ IconFactory.prototype.generateNewIdenticon = function (address, diameter) { // util function iconExistsFor (address) { - return (address in contractMap) && isValidAddress(address) && ('logo' in contractMap[address]) + return (contractMap.address) && isValidAddress(address) && (contractMap[address].logo) } function imageElFor (address) { -- cgit v1.2.3