wip
This commit is contained in:
parent
ef400f8d29
commit
6ed22a7c6e
|
@ -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,
|
||||
})
|
||||
}
|
|
@ -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) {
|
||||
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()
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)) {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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",
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue