POA tokens support - including of poa-contract-metadata package

This commit is contained in:
Victor Baranov 2018-09-18 12:30:37 +03:00
parent d50d957fa3
commit 285e406dcd
9 changed files with 68 additions and 61 deletions

View File

@ -96,7 +96,7 @@ workflows:
jobs: jobs:
prep-deps-npm: prep-deps-npm:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -111,7 +111,7 @@ jobs:
- node_modules - node_modules
prep-deps-firefox: prep-deps-firefox:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -126,7 +126,7 @@ jobs:
prep-build: prep-build:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -145,7 +145,7 @@ jobs:
prep-docs: prep-docs:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -160,7 +160,7 @@ jobs:
prep-scss: prep-scss:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -179,7 +179,7 @@ jobs:
test-lint: test-lint:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -190,7 +190,7 @@ jobs:
test-deps: test-deps:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -201,7 +201,7 @@ jobs:
test-e2e-chrome: test-e2e-chrome:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -217,7 +217,7 @@ jobs:
test-e2e-firefox: test-e2e-firefox:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -238,7 +238,7 @@ jobs:
test-e2e-beta-chrome: test-e2e-beta-chrome:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -254,7 +254,7 @@ jobs:
test-e2e-beta-firefox: test-e2e-beta-firefox:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -275,7 +275,7 @@ jobs:
job-screens: job-screens:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -292,7 +292,7 @@ jobs:
job-publish-prerelease: job-publish-prerelease:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -319,7 +319,7 @@ jobs:
job-publish-release: job-publish-release:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -332,7 +332,7 @@ jobs:
job-publish-postrelease: job-publish-postrelease:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -355,7 +355,7 @@ jobs:
test-unit: test-unit:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -368,7 +368,7 @@ jobs:
environment: environment:
browsers: '["Firefox"]' browsers: '["Firefox"]'
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -392,7 +392,7 @@ jobs:
environment: environment:
browsers: '["Chrome"]' browsers: '["Chrome"]'
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -411,7 +411,7 @@ jobs:
environment: environment:
browsers: '["Firefox"]' browsers: '["Firefox"]'
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -435,7 +435,7 @@ jobs:
environment: environment:
browsers: '["Chrome"]' browsers: '["Chrome"]'
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- checkout - checkout
- restore_cache: - restore_cache:
@ -452,7 +452,7 @@ jobs:
all-tests-pass: all-tests-pass:
docker: docker:
- image: circleci/node:8.11.4-browsers - image: circleci/node:8.12.0-browsers
steps: steps:
- run: - run:
name: All Tests Passed name: All Tests Passed

2
.nvmrc
View File

@ -1 +1 @@
v8.11.4 v8.12.0

View File

@ -115,7 +115,8 @@ class AddTokenScreen extends Component {
const { network } = this.props const { network } = this.props
const networkID = parseInt(network) const networkID = parseInt(network)
let views = [] let views = []
networkID === 1 ? views = [h(TabBar, { const isProdNetwork = networkID === 1 || networkID === 99
isProdNetwork ? views = [h(TabBar, {
tabs: [ tabs: [
{ content: 'Search', key: SEARCH_TAB }, { content: 'Search', key: SEARCH_TAB },
{ content: 'Custom', key: CUSTOM_TOKEN_TAB }, { content: 'Custom', key: CUSTOM_TOKEN_TAB },
@ -279,15 +280,14 @@ class AddTokenScreen extends Component {
} }
renderTabBar () { renderTabBar () {
const props = this.props const { tokenSelectorError, selectedTokens, searchResults } = this.state
const state = this.state const { clearPendingTokens, goHome, network } = this.props
const { tokenSelectorError, selectedTokens, searchResults } = state
const { clearPendingTokens, goHome } = props
return h('div', [ return h('div', [
h('.add-token__search-token', [ h('.add-token__search-token', [
h(TokenSearch, { h(TokenSearch, {
onSearch: ({ results = [] }) => this.setState({ searchResults: results }), onSearch: ({ results = [] }) => this.setState({ searchResults: results }),
error: tokenSelectorError, error: tokenSelectorError,
network: network
}), }),
h('.add-token__token-list', { h('.add-token__token-list', {
style: { style: {

View File

@ -2,6 +2,7 @@ var iconFactory
const isValidAddress = require('ethereumjs-util').isValidAddress const isValidAddress = require('ethereumjs-util').isValidAddress
const toChecksumAddress = require('ethereumjs-util').toChecksumAddress const toChecksumAddress = require('ethereumjs-util').toChecksumAddress
const contractMap = require('eth-contract-metadata') const contractMap = require('eth-contract-metadata')
const contractMapPOA = require('poa-contract-metadata')
const colors = require('../../colors') const colors = require('../../colors')
module.exports = function (jazzicon) { module.exports = function (jazzicon) {

4
package-lock.json generated
View File

@ -23820,6 +23820,10 @@
"integrity": "sha1-HMfCEjA6yr50Jj7DrHgAlYAkLZM=", "integrity": "sha1-HMfCEjA6yr50Jj7DrHgAlYAkLZM=",
"dev": true "dev": true
}, },
"poa-contract-metadata": {
"version": "github:poanetwork/poa-contract-metadata#daee2eab58db1cb2aad50cd58c45374f614f029e",
"from": "github:poanetwork/poa-contract-metadata#master"
},
"pojo-migrator": { "pojo-migrator": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/pojo-migrator/-/pojo-migrator-2.1.0.tgz", "resolved": "https://registry.npmjs.org/pojo-migrator/-/pojo-migrator-2.1.0.tgz",

View File

@ -161,6 +161,7 @@
"percentile": "^1.2.0", "percentile": "^1.2.0",
"pify": "^3.0.0", "pify": "^3.0.0",
"ping-pong-stream": "^1.0.0", "ping-pong-stream": "^1.0.0",
"poa-contract-metadata": "github:poanetwork/poa-contract-metadata#master",
"pojo-migrator": "^2.1.0", "pojo-migrator": "^2.1.0",
"polyfill-crypto.getrandomvalues": "^1.0.0", "polyfill-crypto.getrandomvalues": "^1.0.0",
"post-message-stream": "^3.0.0", "post-message-stream": "^3.0.0",
@ -318,7 +319,7 @@
"watchify": "^3.11.0" "watchify": "^3.11.0"
}, },
"engines": { "engines": {
"node": "8.11.4", "node": "8.12.0",
"npm": "^6.1.0" "npm": "^6.4.1"
} }
} }

View File

@ -1,26 +1,13 @@
import React, { Component } from 'react' import React, { Component } from 'react'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import contractMap from 'eth-contract-metadata' import contractMapETH from 'eth-contract-metadata'
import contractMapPOA from 'poa-contract-metadata'
import Fuse from 'fuse.js' import Fuse from 'fuse.js'
import InputAdornment from '@material-ui/core/InputAdornment' import InputAdornment from '@material-ui/core/InputAdornment'
import TextField from '../../../text-field' import TextField from '../../../text-field'
const contractList = Object.entries(contractMap) let contractList
.map(([ _, tokenData]) => tokenData) let fuse
.filter(tokenData => Boolean(tokenData.erc20))
const fuse = new Fuse(contractList, {
shouldSort: true,
threshold: 0.45,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: [
{ name: 'name', weight: 0.5 },
{ name: 'symbol', weight: 0.5 },
],
})
export default class TokenSearch extends Component { export default class TokenSearch extends Component {
static contextTypes = { static contextTypes = {
@ -42,6 +29,26 @@ export default class TokenSearch extends Component {
this.state = { this.state = {
searchQuery: '', searchQuery: '',
} }
const networkID = parseInt(props.network)
const contractMap = networkID === 1 ? contractMapETH : contractMapPOA
contractList = Object.entries(contractMap)
.map(([ _, tokenData]) => tokenData)
.filter(tokenData => Boolean(tokenData.erc20))
fuse = new Fuse(contractList, {
shouldSort: true,
threshold: 0.45,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: [
{ name: 'name', weight: 0.5 },
{ name: 'symbol', weight: 0.5 },
],
})
} }
handleSearch (searchQuery) { handleSearch (searchQuery) {

View File

@ -17,7 +17,13 @@ function mapStateToProps (state) {
} }
const defaultTokens = [] const defaultTokens = []
const contracts = require('eth-contract-metadata') const contractsETH = require('eth-contract-metadata')
const contractsPOA = require('poa-contract-metadata')
let contracts
// const { network } = this.props
// contracts = network === 1 ? contractsETH : contractsPOA
contracts = contractsETH
for (const address in contracts) { for (const address in contracts) {
const contract = contracts[address] const contract = contracts[address]
if (contract.erc20) { if (contract.erc20) {
@ -170,16 +176,3 @@ TokenList.prototype.componentWillUnmount = function () {
this.tracker.removeListener('update', this.balanceUpdater) this.tracker.removeListener('update', this.balanceUpdater)
this.tracker.removeListener('error', this.showError) this.tracker.removeListener('error', this.showError)
} }
// function uniqueMergeTokens (tokensA, tokensB = []) {
// const uniqueAddresses = []
// const result = []
// tokensA.concat(tokensB).forEach((token) => {
// const normal = normalizeAddress(token.address)
// if (!uniqueAddresses.includes(normal)) {
// uniqueAddresses.push(normal)
// result.push(token)
// }
// })
// return result
// }

View File

@ -2,6 +2,7 @@ var iconFactory
const isValidAddress = require('ethereumjs-util').isValidAddress const isValidAddress = require('ethereumjs-util').isValidAddress
const { checksumAddress } = require('../app/util') const { checksumAddress } = require('../app/util')
const contractMap = require('eth-contract-metadata') const contractMap = require('eth-contract-metadata')
const contractMapPOA = require('poa-contract-metadata')
const colors = require('../../colors') const colors = require('../../colors')
module.exports = function (jazzicon) { module.exports = function (jazzicon) {