commit
1fafa1b26b
|
@ -45,3 +45,5 @@ notes.txt
|
|||
|
||||
.coveralls.yml
|
||||
.nyc_output
|
||||
|
||||
.niftywalletrc
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
; Extra environment variables
|
||||
ETH_MAINNET_RPC_ENDPOINT=00000000000
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
## Current Master
|
||||
|
||||
## 5.2.3 Fri Jan 15 2021
|
||||
|
||||
- [#441](https://github.com/poanetwork/nifty-wallet/pull/441) - Replace Infura Mainnet endpoint with custom one
|
||||
|
||||
## 5.2.2 Tue Dec 29 2020
|
||||
|
||||
- [#437](https://github.com/poanetwork/nifty-wallet/pull/437) - Support getting proxy implementation address by following EIP-1967
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "__MSG_appName__",
|
||||
"short_name": "__MSG_appName__",
|
||||
"version": "5.2.2",
|
||||
"version": "5.2.3",
|
||||
"manifest_version": 2,
|
||||
"author": "POA Network",
|
||||
"description": "__MSG_appDescription__",
|
||||
|
|
|
@ -242,6 +242,7 @@ function setupController (initState, initLangCode) {
|
|||
//
|
||||
|
||||
const controller = new MetamaskController({
|
||||
ethMainnetRpcEndpoint: process.env.ETH_MAINNET_RPC_ENDPOINT,
|
||||
// User confirmation callbacks:
|
||||
showUnconfirmedMessage: triggerUi,
|
||||
unlockAccountMessage: triggerUi,
|
||||
|
|
|
@ -129,19 +129,11 @@ class CurrencyController {
|
|||
try {
|
||||
currentCurrency = this.getCurrentCurrency()
|
||||
currentCoin = this.getCurrentCoin()
|
||||
let conversionRate, conversionDate
|
||||
if (currentCoin === 'poa' || currentCoin === 'etc' || currentCoin === 'rbtc') {
|
||||
const apiLink = `https://min-api.cryptocompare.com/data/price?fsym=${currentCoin.toUpperCase()}&tsyms=${currentCurrency.toUpperCase()}`
|
||||
const response = await fetch(apiLink)
|
||||
const parsedResponse = await response.json()
|
||||
conversionRate = Number(parsedResponse[currentCurrency.toUpperCase()])
|
||||
conversionDate = parseInt((new Date()).getTime() / 1000)
|
||||
} else {
|
||||
const response = await fetch(`https://api.infura.io/v1/ticker/eth${currentCurrency.toLowerCase()}`)
|
||||
const parsedResponse = await response.json()
|
||||
conversionRate = Number(parsedResponse.bid)
|
||||
conversionDate = Number(parsedResponse.timestamp)
|
||||
}
|
||||
const apiLink = `https://min-api.cryptocompare.com/data/price?fsym=${currentCoin.toUpperCase()}&tsyms=${currentCurrency.toUpperCase()}`
|
||||
const response = await fetch(apiLink)
|
||||
const parsedResponse = await response.json()
|
||||
const conversionRate = Number(parsedResponse[currentCurrency.toUpperCase()])
|
||||
const conversionDate = parseInt((new Date()).getTime() / 1000)
|
||||
this.setConversionRate(conversionRate)
|
||||
this.setConversionDate(conversionDate)
|
||||
} catch (err) {
|
||||
|
|
|
@ -41,7 +41,7 @@ const {
|
|||
RSK_CODE,
|
||||
RSK_TESTNET_CODE,
|
||||
} = require('./enums')
|
||||
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
|
||||
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN]
|
||||
const POCKET_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET, POA, DAI, GOERLI_TESTNET, POA_SOKOL]
|
||||
|
||||
const env = process.env.METAMASK_ENV
|
||||
|
@ -234,6 +234,8 @@ module.exports = class NetworkController extends EventEmitter {
|
|||
} else if (isInfura) {
|
||||
this._configureInfuraProvider(opts)
|
||||
// other type-based rpc endpoints
|
||||
} else if (type === MAINNET) {
|
||||
this._configureStandardProvider({ rpcUrl: this._ethMainnetRpcEndpoint, chainId, ticker, nickname })
|
||||
} else if (type === POA) {
|
||||
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_CODE)[0], chainId, ticker, nickname })
|
||||
} else if (type === DAI) {
|
||||
|
@ -258,6 +260,21 @@ module.exports = class NetworkController extends EventEmitter {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Ethereum Mainnet RPC endpoint
|
||||
*
|
||||
* @param {string} endpoint - Ethereum Mainnet RPC endpoint
|
||||
* @throws {Error} if the endpoint is not a valid string
|
||||
* @return {void}
|
||||
*/
|
||||
setEthMainnetRPCEndpoint (endpoint) {
|
||||
if (!endpoint || typeof endpoint !== 'string') {
|
||||
throw new Error('Invalid ETH Mainnet RPC Endpoint')
|
||||
}
|
||||
|
||||
this._ethMainnetRpcEndpoint = endpoint
|
||||
}
|
||||
|
||||
_configureInfuraProvider ({ type }) {
|
||||
log.info('NetworkController - configureInfuraProvider', type)
|
||||
const networkClient = createInfuraClient({
|
||||
|
|
|
@ -108,6 +108,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||
|
||||
// network store
|
||||
this.networkController = new NetworkController(initState.NetworkController)
|
||||
this.networkController.setEthMainnetRPCEndpoint(opts.ethMainnetRpcEndpoint)
|
||||
|
||||
// preferences controller
|
||||
this.preferencesController = new PreferencesController({
|
||||
|
@ -494,7 +495,7 @@ module.exports = class MetamaskController extends EventEmitter {
|
|||
setPreference: nodeify(preferencesController.setPreference, preferencesController),
|
||||
|
||||
// BlacklistController
|
||||
whitelistPhishingDomain: this.whitelistPhishingDomain.bind(this),
|
||||
// whitelistPhishingDomain: this.whitelistPhishingDomain.bind(this),
|
||||
|
||||
// AddressController
|
||||
setAddressBook: nodeify(addressBookController.setAddressBook, addressBookController),
|
||||
|
|
|
@ -30,6 +30,10 @@ function gulpParallel (...args) {
|
|||
}
|
||||
}
|
||||
|
||||
const conf = require('rc')('niftywallet', {
|
||||
ETH_MAINNET_RPC_ENDPOINT: process.env.ETH_MAINNET_RPC_ENDPOINT,
|
||||
})
|
||||
|
||||
const browserPlatforms = [
|
||||
'firefox',
|
||||
'chrome',
|
||||
|
@ -425,6 +429,7 @@ function generateBundler (opts, performBundle) {
|
|||
bundler.transform(envify({
|
||||
METAMASK_DEBUG: opts.devMode,
|
||||
NODE_ENV: opts.devMode ? 'development' : 'production',
|
||||
ETH_MAINNET_RPC_ENDPOINT: conf.ETH_MAINNET_RPC_ENDPOINT,
|
||||
}))
|
||||
|
||||
if (opts.watch) {
|
||||
|
|
|
@ -42,6 +42,8 @@ const {
|
|||
customDPaths,
|
||||
} = require('../../app/scripts/controllers/network/enums')
|
||||
|
||||
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN]
|
||||
|
||||
const valueTable = {
|
||||
wei: '1000000000000000000',
|
||||
kwei: '1000000000000000',
|
||||
|
@ -491,14 +493,13 @@ function isValidChecksumAddress (network, address) {
|
|||
}
|
||||
|
||||
function isInfuraProvider (type) {
|
||||
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
|
||||
return INFURA_PROVIDER_TYPES.includes(type)
|
||||
}
|
||||
|
||||
function isKnownProvider (type) {
|
||||
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
|
||||
return INFURA_PROVIDER_TYPES.includes(type) ||
|
||||
type === LOCALHOST ||
|
||||
type === MAINNET ||
|
||||
type === POA_SOKOL ||
|
||||
type === POA ||
|
||||
type === DAI ||
|
||||
|
|
|
@ -42987,6 +42987,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"rc": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
|
||||
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"deep-extend": "^0.6.0",
|
||||
"ini": "~1.3.0",
|
||||
"minimist": "^1.2.0",
|
||||
"strip-json-comments": "~2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"deep-extend": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
|
||||
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"react": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
|
||||
|
|
|
@ -306,6 +306,7 @@
|
|||
"qs": "^6.2.0",
|
||||
"qunitjs": "^2.4.1",
|
||||
"radgrad-jsdoc-template": "^1.1.3",
|
||||
"rc": "^1.2.8",
|
||||
"react-redux": "^7.2.0",
|
||||
"react-test-renderer": "^16.12.0",
|
||||
"react-testutils-additions": "^16.0.2",
|
||||
|
|
|
@ -25,6 +25,7 @@ describe('DetectTokensController', () => {
|
|||
|
||||
keyringMemStore = new ObservableStore({ isUnlocked: false})
|
||||
network = new NetworkController()
|
||||
network.setEthMainnetRPCEndpoint('foo')
|
||||
preferences = new PreferencesController({ network })
|
||||
controller = new DetectTokensController({ preferences: preferences, network: network, keyringMemStore: keyringMemStore })
|
||||
|
||||
|
|
|
@ -69,6 +69,7 @@ describe('MetaMaskController', function () {
|
|||
},
|
||||
initState: cloneDeep(firstTimeState),
|
||||
platform: { showTransactionNotification: () => {} },
|
||||
ethMainnetRpcEndpoint: 'foo',
|
||||
})
|
||||
// disable diagnostics
|
||||
metamaskController.diagnostics = null
|
||||
|
|
|
@ -20,6 +20,7 @@ describe('# Network Controller', function () {
|
|||
.reply(200)
|
||||
|
||||
networkController = new NetworkController()
|
||||
networkController.setEthMainnetRPCEndpoint('foo')
|
||||
|
||||
networkController.initializeProvider(networkControllerProviderConfig)
|
||||
})
|
||||
|
|
|
@ -401,7 +401,7 @@ describe('normalizing values', function () {
|
|||
assert(isInfuraProvider('kovan'))
|
||||
assert(isInfuraProvider('ropsten'))
|
||||
assert(isInfuraProvider('rinkeby'))
|
||||
assert(isInfuraProvider('mainnet'))
|
||||
assert(!isInfuraProvider('mainnet'))
|
||||
assert(!isInfuraProvider('goerli_testnet'))
|
||||
assert(!isInfuraProvider('sokol'))
|
||||
assert(!isInfuraProvider('classic'))
|
||||
|
|
|
@ -53,6 +53,7 @@ describe('Actions', () => {
|
|||
},
|
||||
},
|
||||
initState: clone(firstTimeState),
|
||||
ethMainnetRpcEndpoint: 'foo',
|
||||
})
|
||||
|
||||
await metamaskController.createNewVaultAndRestore(password, TEST_SEED)
|
||||
|
|
Loading…
Reference in New Issue