parent
7c52faf4cb
commit
c9015e6f2d
@ -0,0 +1,57 @@ |
|||||||
|
const remixLib = require('@remix-project/remix-lib') |
||||||
|
|
||||||
|
const EventManager = remixLib.EventManager |
||||||
|
const Web3Providers = remixLib.vm.Web3Providers |
||||||
|
const DummyProvider = remixLib.vm.DummyProvider |
||||||
|
const init = remixLib.init |
||||||
|
|
||||||
|
class ContextManager { |
||||||
|
constructor (executionContext) { |
||||||
|
this.executionContext = executionContext |
||||||
|
this.web3 = this.executionContext.web3() |
||||||
|
this.event = new EventManager() |
||||||
|
} |
||||||
|
|
||||||
|
initProviders () { |
||||||
|
this.web3Providers = new Web3Providers() |
||||||
|
this.addProvider('DUMMYWEB3', new DummyProvider()) |
||||||
|
this.switchProvider('DUMMYWEB3') |
||||||
|
|
||||||
|
this.addProvider('vm', this.executionContext.vm()) |
||||||
|
this.addProvider('injected', this.executionContext.internalWeb3()) |
||||||
|
this.addProvider('web3', this.executionContext.internalWeb3()) |
||||||
|
this.switchProvider(this.executionContext.getProvider()) |
||||||
|
} |
||||||
|
|
||||||
|
getWeb3 () { |
||||||
|
return this.web3 |
||||||
|
} |
||||||
|
|
||||||
|
addProvider (type, obj) { |
||||||
|
this.web3Providers.addProvider(type, obj) |
||||||
|
this.event.trigger('providerAdded', [type]) |
||||||
|
} |
||||||
|
|
||||||
|
switchProvider(type, cb) { |
||||||
|
this.web3Providers.get(type, (error, obj) => { |
||||||
|
if (error) { |
||||||
|
return console.log('provider ' + type + ' not defined') |
||||||
|
} |
||||||
|
this.web3 = obj |
||||||
|
this.executionContext.detectNetwork((error, network) => { |
||||||
|
if (error || !network) { |
||||||
|
this.web3 = obj |
||||||
|
} else { |
||||||
|
var webDebugNode = init.web3DebugNode(network.name) |
||||||
|
this.web3 = (!webDebugNode ? obj : webDebugNode) |
||||||
|
} |
||||||
|
this.event.trigger('providerChanged', [type, this.web3]) |
||||||
|
if (cb) return cb() |
||||||
|
}) |
||||||
|
this.event.trigger('providerChanged', [type, this.web3]) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
module.exports = ContextManager |
Loading…
Reference in new issue