fulfilled changes requested

This commit is contained in:
Andrew Nguyen 2019-07-10 12:11:51 -04:00
parent 6f81685711
commit 088aa098e2
4 changed files with 387 additions and 341 deletions

View File

@ -9,6 +9,34 @@ const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMidd
const createPocketMiddleware = require('json-rpc-pocket')
const BlockTracker = require('eth-block-tracker')
const devid = 'DEVVGQ8VfHgBBet8CyowHcN'
const {
ROPSTEN,
ROPSTEN_CODE,
ROPSTEN_CHAINID,
RINKEBY_CODE,
RINKEBY_CHAINID,
RINKEBY,
KOVAN,
KOVAN_CODE,
KOVAN_CHAINID,
MAINNET,
MAINNET_CODE,
MAINNET_CHAINID,
ETH_TICK,
POA_SOKOL,
POA_CODE,
POA_CHAINID,
POA_TICK,
POA,
DAI,
DAI_CODE,
DAI_CHAINID,
GOERLI_TESTNET,
GOERLI_TESTNET_CODE,
GOERLI_TESTNET_CHAINID,
POA_SOKOL_CODE,
POA_SOKOL_CHAINID,
} = require('./enums')
module.exports = createPocketClient
@ -38,45 +66,45 @@ function getNetworkIds ({ network }) {
let netId
let ticker
switch (network) {
case 'mainnet':
netId = '1'
chainId = '0x01'
ticker = "ETH"
case MAINNET:
netId = MAINNET_CODE.toString()
chainId = MAINNET_CHAINID
ticker = ETH_TICK
break
case 'ropsten':
netId = '3'
chainId = '0x03'
ticker = "ETH"
case ROPSTEN:
netId = ROPSTEN_CODE.toString()
chainId = ROPSTEN_CHAINID
ticker = ETH_TICK
break
case 'rinkeby':
netId = '4'
chainId = '0x04'
ticker = "ETH"
case RINKEBY:
netId = RINKEBY_CODE.toString()
chainId = RINKEBY_CHAINID
ticker = ETH_TICK
break
case 'kovan':
netId = '42'
chainId = '0x2a'
ticker = "ETH"
case KOVAN:
netId = KOVAN_CODE.toString()
chainId = KOVAN_CHAINID
ticker = ETH_TICK
break
case 'goerli':
netId = '5'
chainId = '0x05'
ticker = "ETH"
case GOERLI_TESTNET:
netId = GOERLI_TESTNET_CODE.toString()
chainId = GOERLI_TESTNET_CHAINID
ticker = ETH_TICK
break
case 'poa':
netId = '99'
chainId = '0x63'
ticker = 'POA'
case POA:
netId = POA_CODE.toString()
chainId = POA_CHAINID
ticker = POA_TICK
break
case 'dai':
netId = '100'
chainId = '0x64'
ticker = 'POA'
case DAI:
netId = DAI_CODE.toString()
chainId = DAI_CHAINID
ticker = POA_TICK
break
case 'sokol':
netId= '77'
chainId = '0x4D'
ticker = 'POA'
case POA_SOKOL:
netId= POA_SOKOL_CODE.toString()
chainId = POA_SOKOL_CHAINID
ticker = POA_TICK
break
default:
throw new Error(`createPocketClient - unknown network "${network}"`)

View File

@ -11,6 +11,18 @@ const RSK = 'rsk'
const RSK_TESTNET = 'rsk_testnet'
const LOCALHOST = 'localhost'
const ETH_TICK = "ETH"
const POA_TICK = "POA"
const MAINNET_CHAINID = "0X01"
const ROPSTEN_CHAINID = "0x03"
const RINKEBY_CHAINID = "0x04"
const KOVAN_CHAINID = "0x2a"
const GOERLI_TESTNET_CHAINID = "0X5"
const POA_CHAINID = "0x63"
const DAI_CHAINID = "0x64"
const POA_SOKOL_CHAINID = "0x4D"
const POA_CODE = 99
const DAI_CODE = 100
const POA_SOKOL_CODE = 77

View File

@ -37,6 +37,7 @@ const {
RSK_TESTNET_CODE,
} = require('./enums')
const INFURA_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET]
const POCKET_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET, POA, DAI, GOERLI_TESTNET, POA_SOKOL]
const env = process.env.METAMASK_ENV
const METAMASK_DEBUG = process.env.METAMASK_DEBUG
@ -159,7 +160,6 @@ module.exports = class NetworkController extends EventEmitter {
}
setDProvider(key){
console.log("UPDATING STATE TO " + key)
this.dProviderStore.updateState({
dProvider: key,
})
@ -179,38 +179,28 @@ module.exports = class NetworkController extends EventEmitter {
const { type, rpcTarget } = opts
// infura type-based endpoints
const isInfura = INFURA_PROVIDER_TYPES.includes(type)
if (isInfura) {
console.log(this.dProviderStore.getState())
if (this.dProviderStore.getState().dProvider) {
this._configurePocketProvider(opts)
} else {
this._configureInfuraProvider(opts)
// pocket type-based endpointes
const isPocket = POCKET_PROVIDER_TYPES.includes(type)
if (!isPocket && this.dProviderStore.getState().dProvider){
this.dProviderStore.updateState({
dProvider: false
})
}
if (isPocket && this.dProviderStore.getState().dProvider){
this._configurePocketProvider(opts)
} else if (isInfura) {
this._configureInfuraProvider(opts)
// other type-based rpc endpoints
} else if (type === POA) {
if (this.dProviderStore.getState().dProvider) {
this._configurePocketProvider(opts)
} else {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_CODE)[0] })
}
} else if (type === DAI) {
if (this.dProviderStore.getState().dProvider) {
this._configurePocketProvider(opts)
} else {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(DAI_CODE)[0] })
}
} else if (type === POA_SOKOL) {
if (this.dProviderStore.getState().dProvider) {
this._configurePocketProvider(opts)
} else {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_SOKOL_CODE)[0] })
}
} else if (type === GOERLI_TESTNET) {
if (this.dProviderStore.getState().dProvider) {
this._configurePocketProvider(opts)
} else {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(GOERLI_TESTNET_CODE)[0] })
}
} else if (type === CLASSIC) {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(CLASSIC_CODE)[0] })
} else if (type === RSK) {

View File

@ -1,7 +1,7 @@
const inherits = require('util').inherits
const Component = require('react').Component
const h = require('react-hyperscript')
const connect = require('react-redux').connect
import PropTypes from 'prop-types'
const actions = require('../../ui/app/actions')
const LoadingIndicator = require('./components/loading')
const Web3 = require('web3')
@ -13,37 +13,43 @@ const exportAsFile = require('./util').exportAsFile
const Modal = require('../../ui/app/components/modals/index').Modal
const ethNetProps = require('eth-net-props')
const { networks } = require('../../app/scripts/controllers/network/util')
const {
ROPSTEN,
RINKEBY,
KOVAN,
MAINNET,
POA,
DAI,
POA_SOKOL,
GOERLI_TESTNET,
} = require('../../app/scripts/controllers/network/enums')
const POCKET_PROVIDER_TYPES = [ROPSTEN, RINKEBY, KOVAN, MAINNET, POA, DAI, GOERLI_TESTNET, POA_SOKOL]
module.exports = connect(mapStateToProps)(ConfigScreen)
class ConfigScreen extends Component {
function mapStateToProps (state) {
return {
metamask: state.metamask,
warning: state.appState.warning,
}
}
inherits(ConfigScreen, Component)
function ConfigScreen (props) {
if (props.metamask.dProviderStore.dProvider){
constructor (props) {
super(props)
this.state = {
loading: false,
provider: "Decentralized"
dProvider: props.metamask.dProviderStore.dProvider
}
} else{
this.state = {
loading: false,
provider: "Centralized"
}
}
Component.call(this)
}
ConfigScreen.prototype.render = function () {
static propTypes = {
dispatch: PropTypes.func,
}
render () {
const state = this.props
const metamaskState = state.metamask
const warning = state.warning
if( state.metamask.dProviderStore.dProvider != this.state.dProvider){
this.setState({
dProvider: this.props.metamask.dProviderStore.dProvider
})
}
return (
h('.flex-column.flex-grow', {
style: {
@ -93,7 +99,7 @@ ConfigScreen.prototype.render = function () {
},
}, [
currentProviderDisplay(metamaskState, state),
this.currentProviderDisplay(metamaskState, state),
h('div', { style: {display: 'flex'} }, [
h('input#new_rpc', {
@ -131,7 +137,7 @@ ConfigScreen.prototype.render = function () {
h('hr.horizontal-line'),
currentConversionInformation(metamaskState, state),
this.currentConversionInformation(metamaskState, state),
h('hr.horizontal-line', {
style: {
@ -196,7 +202,6 @@ ConfigScreen.prototype.render = function () {
},
}),
// POCKET NETWORK UI CHANGES START
h('p', {
style: {
fontFamily: 'Nunito Regular',
@ -204,26 +209,24 @@ ConfigScreen.prototype.render = function () {
lineHeight: '18px',
},
}, [
'Choose Pocket Nework for a decentralized blockchain provider for applicable networks',
'Switch to Decentralized Provider (Pocket)',
]),
h('button', {
style: {
alignSelf: 'center',
marginTop: '20px',
},
onClick: (event) => {
h('input', {
type:'checkbox',
name:'pocket-checkbox',
checked: this.state.dProvider,
onChange: (event) => {
event.preventDefault()
this.toggleProvider()
},
}, this.state.provider),
}),
h('hr.horizontal-line', {
style: {
marginTop: '20px',
},
}),
// POCKET NETWORK UI CHANGES END
h('div', {
style: {
@ -257,6 +260,7 @@ ConfigScreen.prototype.render = function () {
marginTop: '20px',
},
}),
h('button', {
style: {
alignSelf: 'center',
@ -273,29 +277,31 @@ ConfigScreen.prototype.render = function () {
)
}
ConfigScreen.prototype.toggleProvider = function (){
console.log(this)
console.log(this.props.metamask.provider.type)
if (this.state.provider == "Centralized"){
this.setState({
provider: "Decentralized"
})
toggleProvider(){
const isPocket = POCKET_PROVIDER_TYPES.includes(this.props.metamask.provider.type)
if (isPocket){
if (!this.state.dProvider){
this.props.dispatch(actions.setDProvider(true))
this.setState({
dProvider: true
})
} else {
this.props.dispatch(actions.setDProvider(false))
this.setState({
dProvider: false
})
}
this.props.dispatch(actions.setProviderType(this.props.metamask.provider.type))
} else {
this.setState({
provider: "Centralized"
})
this.props.dispatch(actions.setDProvider(false))
this.props.dispatch(actions.setProviderType(this.props.metamask.provider.type))
alert("Pocket does not support this network, using centralized provider")
}
}
ConfigScreen.prototype.componentWillUnmount = function () {
componentWillUnmount () {
this.props.dispatch(actions.displayWarning(''))
}
ConfigScreen.prototype.rpcValidation = function (newRpc, state) {
rpcValidation (newRpc, state) {
if (validUrl.isWebUri(newRpc)) {
this.setState({
loading: true,
@ -320,7 +326,7 @@ ConfigScreen.prototype.rpcValidation = function (newRpc, state) {
}
}
function currentConversionInformation (metamaskState, state) {
currentConversionInformation (metamaskState, state) {
const currentCurrency = metamaskState.currentCurrency
const conversionDate = metamaskState.conversionDate
return h('div', [
@ -341,7 +347,7 @@ function currentConversionInformation (metamaskState, state) {
])
}
function currentProviderDisplay (metamaskState, state) {
currentProviderDisplay (metamaskState, state) {
const provider = metamaskState.provider
let title, value
@ -364,3 +370,13 @@ function currentProviderDisplay (metamaskState, state) {
}, 'Delete'),
])
}
}
function mapStateToProps (state) {
return {
metamask: state.metamask,
warning: state.appState.warning,
}
}
module.exports = connect(mapStateToProps)(ConfigScreen)