This commit is contained in:
andrewnguyen22 2019-06-28 11:25:35 -04:00 committed by Andrew Nguyen
parent ef400f8d29
commit 6ed22a7c6e
8 changed files with 16039 additions and 16643 deletions

View File

@ -0,0 +1,74 @@
const mergeMiddleware = require('json-rpc-engine/src/mergeMiddleware')
const createScaffoldMiddleware = require('json-rpc-engine/src/createScaffoldMiddleware')
const createBlockReRefMiddleware = require('eth-json-rpc-middleware/block-ref')
const createRetryOnEmptyMiddleware = require('eth-json-rpc-middleware/retryOnEmpty')
const createBlockCacheMiddleware = require('eth-json-rpc-middleware/block-cache')
const createInflightMiddleware = require('eth-json-rpc-middleware/inflight-cache')
const createBlockTrackerInspectorMiddleware = require('eth-json-rpc-middleware/block-tracker-inspector')
const providerFromMiddleware = require('eth-json-rpc-middleware/providerFromMiddleware')
const createPocketMiddleware = require('json-rpc-pocket')
const BlockTracker = require('eth-block-tracker')
module.exports = createPocketClient
function createPocketClient ({ network }) {
const pocketMiddleware = createPocketMiddleware('DEVO7QQqPHCK2h3cGXhh2rY', {
netID: getNetworkIds(network).netId,
})
const pocketProvider = providerFromMiddleware(pocketMiddleware)
const blockTracker = new BlockTracker({ provider: pocketProvider })
const networkMiddleware = mergeMiddleware([
createNetworkAndChainIdMiddleware({ network }),
createBlockCacheMiddleware({ blockTracker }),
createInflightMiddleware(),
createBlockReRefMiddleware({ blockTracker, provider: pocketProvider }),
createRetryOnEmptyMiddleware({ blockTracker, provider: pocketProvider }),
createBlockTrackerInspectorMiddleware({ blockTracker }),
pocketMiddleware,
])
return { networkMiddleware, blockTracker }
}
function getNetworkIds ({ network }) {
let chainId
let netId
console.log(network)
switch (network) {
case 'mainnet':
netId = '1'
chainId = '0x01'
break
case 'ropsten':
netId = '3'
chainId = '0x03'
break
case 'rinkeby':
netId = '4'
chainId = '0x04'
break
case 'kovan':
netId = '42'
chainId = '0x2a'
break
case 'goerli':
netId = '5'
chainId = '0x05'
break
default:
throw new Error(`createPocketClient - unknown network "${network}"`)
}
return {
chainId, netId,
}
}
function createNetworkAndChainIdMiddleware ({ network }) {
const networkIds = getNetworkIds(network)
return createScaffoldMiddleware({
eth_chainId: networkIds.chainId,
net_version: networkIds.netId,
})
}

View File

@ -10,6 +10,7 @@ const createMetamaskMiddleware = require('./createMetamaskMiddleware')
const createInfuraClient = require('./createInfuraClient')
const createJsonRpcClient = require('./createJsonRpcClient')
const createLocalhostClient = require('./createLocalhostClient')
//const createPocketClient = require('./createPocketClient')
const { createSwappableProxy, createEventEmitterProxy } = require('swappable-obj-proxy')
const ethNetProps = require('eth-net-props')
const parse = require('url-parse')
@ -55,7 +56,7 @@ module.exports = class NetworkController extends EventEmitter {
// create stores
this.providerStore = new ObservableStore(providerConfig)
this.networkStore = new ObservableStore('loading')
this.store = new ComposedStore({ provider: this.providerStore, network: this.networkStore })
this.store = new ComposedStore({ provider: this.providerStore, network: this.networkStore, dProvider: false })
this.on('networkDidChange', this.lookupNetwork)
// provider and block tracker
this._provider = null
@ -152,6 +153,16 @@ module.exports = class NetworkController extends EventEmitter {
return this.providerStore.getState()
}
getDProvider(){
return this.store.getState().dProvider
}
setDProvider(key){
this.store.updateState({
dProvider: key
})
}
//
// Private
//
@ -167,7 +178,13 @@ module.exports = class NetworkController extends EventEmitter {
// infura type-based endpoints
const isInfura = INFURA_PROVIDER_TYPES.includes(type)
if (isInfura) {
this._configureInfuraProvider(opts)
if (this.store.dProvider) {
// log.debug("IS POCKET")
this._configurePocketProvider(opts)
} else {
// log.debug("IS INFURA")
this._configureInfuraProvider(opts)
}
// other type-based rpc endpoints
} else if (type === POA) {
this._configureStandardProvider({ rpcUrl: ethNetProps.RPCEndpoints(POA_CODE)[0] })
@ -199,6 +216,18 @@ module.exports = class NetworkController extends EventEmitter {
this._setNetworkClient(networkClient)
}
_configurePocketProvider ({ type }) {
log.info('NetworkController - configurePocketProvider', type)
//const networkClient = createPocketClient({ network: type })
const networkClient = createInfuraClient({ network: type })
this._setNetworkClient(networkClient)
// setup networkConfig
var settings = {
ticker: 'ETH',
}
this.networkConfig.putState(settings)
}
_configureLocalhostProvider () {
log.info('NetworkController - configureLocalhostProvider')
const networkClient = createLocalhostClient()

View File

@ -370,6 +370,7 @@ module.exports = class MetamaskController extends EventEmitter {
setCurrentCoin: this.setCurrentCoin.bind(this),
setUseBlockie: this.setUseBlockie.bind(this),
setCurrentLocale: this.setCurrentLocale.bind(this),
setDProvider: this.setDProvider.bind(this),
markAccountsFound: this.markAccountsFound.bind(this),
markPasswordForgotten: this.markPasswordForgotten.bind(this),
unMarkPasswordForgotten: this.unMarkPasswordForgotten.bind(this),
@ -1750,6 +1751,20 @@ module.exports = class MetamaskController extends EventEmitter {
}
}
/**
* A method for setting a user's preference of decent provider
* @param {string} key - boolean for decentralized provider
* @param {Function} cb - A callback function called when complete.
*/
setDProvider (key, cb) {
try {
this.networkController.setDProvider(key)
cb(null)
} catch (err) {
cb(err)
}
}
/**
* A method for initializing storage the first time.
* @param {Object} initState - The default state to initialize with.

View File

@ -23,8 +23,23 @@ class ConfigScreen extends Component {
}
}
<<<<<<< ef400f8d291b983ac5a95bb2d4a3287dae588f76
static propTypes = {
dispatch: PropTypes.func,
=======
inherits(ConfigScreen, Component)
function ConfigScreen (props) {
if (props.metamask.dProvider){
this.state = {
loading: false,
provider: "Decentralized"
}
} else{
this.state = {
loading: false,
provider: "Centralized"
}
>>>>>>> wip
}
render () {
@ -83,6 +98,7 @@ class ConfigScreen extends Component {
this.currentProviderDisplay(metamaskState, state),
<<<<<<< ef400f8d291b983ac5a95bb2d4a3287dae588f76
h('div', { style: {display: 'flex'} }, [
h('input#new_rpc', {
placeholder: 'New RPC URL',
@ -126,6 +142,42 @@ class ConfigScreen extends Component {
marginTop: '20px',
},
}),
=======
// POCKET NETWORK UI CHANGES START
h('p', {
style: {
fontFamily: 'Nunito Regular',
fontSize: '14px',
lineHeight: '18px',
},
}, [
'Choose Pocket Nework for a decentralized blockchain provider for applicable networks',
]),
h('button', {
style: {
alignSelf: 'center',
marginTop: '20px',
},
onClick: (event) => {
event.preventDefault()
this.toggleProvider()
},
}, this.state.provider),
h('hr.horizontal-line', {
style: {
marginTop: '20px',
},
}),
// POCKET NETWORK UI CHANGES END
h('div', {
style: {
marginTop: '20px',
},
}, [
>>>>>>> wip
h('div', {
style: {
@ -183,8 +235,12 @@ class ConfigScreen extends Component {
marginTop: '20px',
},
}),
<<<<<<< ef400f8d291b983ac5a95bb2d4a3287dae588f76
h('div', {
=======
h('button', {
>>>>>>> wip
style: {
marginTop: '20px',
},
@ -233,9 +289,30 @@ class ConfigScreen extends Component {
)
}
<<<<<<< ef400f8d291b983ac5a95bb2d4a3287dae588f76
componentWillUnmount () {
this.props.dispatch(actions.displayWarning(''))
}
=======
ConfigScreen.prototype.toggleProvider = function (){
// console.log(this)
if (this.state.provider == "Centralized"){
this.setState({
provider: "Decentralized"
})
this.props.dispatch(actions.setDProvider(true))
} else {
this.setState({
provider: "Centralized"
})
this.props.dispatch(actions.setDProvider(false))
}
}
ConfigScreen.prototype.componentWillUnmount = function () {
this.props.dispatch(actions.displayWarning(''))
}
>>>>>>> wip
rpcValidation (newRpc, state) {
if (validUrl.isWebUri(newRpc)) {

32463
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -148,6 +148,7 @@
"inject-css": "^0.1.1",
"json-rpc-engine": "^4.0.0",
"json-rpc-middleware-stream": "^2.1.0",
"json-rpc-pocket": "0.0.1",
"jsonschema": "^1.2.4",
"lodash.debounce": "^4.0.8",
"lodash.shuffle": "^4.2.0",
@ -184,6 +185,7 @@
"react-router-dom": "^4.2.2",
"react-select": "^1.0.0",
"react-simple-file-input": "^2.0.0",
"react-switch": "^5.0.0",
"react-tippy": "^1.2.2",
"react-toggle-button": "^2.2.0",
"react-tooltip": "^3.10.0",

View File

@ -319,6 +319,10 @@ var actions = {
SET_USE_BLOCKIE: 'SET_USE_BLOCKIE',
setUseBlockie,
// DProvider
SET_DPROVIDER: 'SET_DPROVIDER',
setDProvider,
// locale
SET_CURRENT_LOCALE: 'SET_CURRENT_LOCALE',
SET_LOCALE_MESSAGES: 'SET_LOCALE_MESSAGES',
@ -2648,6 +2652,13 @@ function updateCurrentLocale (key) {
}
}
function setDProvider(key){
return {
type: actions.SET_DPROVIDER,
value: key,
}
}
function setCurrentLocale (key) {
return {
type: actions.SET_CURRENT_LOCALE,

View File

@ -50,6 +50,8 @@ function reduceMetamask (state, action) {
networkEndpointType: OLD_UI_NETWORK_TYPE,
isRevealingSeedWords: false,
welcomeScreenSeen: false,
// // attempting to add new state to metamask state
// dProvider: false,
currentLocale: '',
preferences: {
useETHAsPrimaryCurrency: true,
@ -352,6 +354,11 @@ function reduceMetamask (state, action) {
welcomeScreenSeen: true,
})
case actions.SET_DPROVIDER:
return extend(metamaskState, {
dProvider: action.value
})
case actions.SET_CURRENT_LOCALE:
return extend(metamaskState, {
currentLocale: action.value,