fix creating vm acount

remotes/origin/fix_vm_mode
yann300 2 years ago
parent 7bd2688e9d
commit 520ab146a6
  1. 12
      apps/remix-ide/src/blockchain/providers/vm.js
  2. 32
      apps/remix-ide/src/blockchain/providers/worker-vm.ts
  3. 14
      libs/remix-ui/run-tab/src/lib/components/account.tsx

@ -7,6 +7,7 @@ class VMProvider {
this.executionContext = executionContext this.executionContext = executionContext
this.worker = null this.worker = null
this.provider = null this.provider = null
this.newAccountCallback = {}
} }
getAccounts (cb) { getAccounts (cb) {
@ -44,6 +45,11 @@ class VMProvider {
this.accounts = {} this.accounts = {}
this.executionContext.setWeb3(this.executionContext.getProvider(), this.web3) this.executionContext.setWeb3(this.executionContext.getProvider(), this.web3)
} }
} else if (msg.data.cmd === 'newAccountResult') {
if (this.newAccountCallback[msg.data.stamp]) {
this.newAccountCallback[msg.data.stamp](msg.data.error, msg.data.result)
delete this.newAccountCallback[msg.data.stamp]
}
} }
}) })
@ -54,13 +60,15 @@ class VMProvider {
// can be removed later when we update the API // can be removed later when we update the API
createVMAccount (newAccount) { createVMAccount (newAccount) {
const { privateKey, balance } = newAccount const { privateKey, balance } = newAccount
this.RemixSimulatorProvider.Accounts._addAccount(privateKey, balance) this.worker.postMessage({ cmd: 'addAccount', privateKey: privateKey, balance })
const privKey = Buffer.from(privateKey, 'hex') const privKey = Buffer.from(privateKey, 'hex')
return '0x' + privateToAddress(privKey).toString('hex') return '0x' + privateToAddress(privKey).toString('hex')
} }
newAccount (_passwordPromptCb, cb) { newAccount (_passwordPromptCb, cb) {
this.RemixSimulatorProvider.Accounts.newAccount(cb) const stamp = Date.now()
this.newAccountCallback[stamp] = cb
this.worker.postMessage({ cmd: 'newAccount', stamp })
} }
getBalanceInEther (address, cb) { getBalanceInEther (address, cb) {

@ -42,6 +42,36 @@ self.onmessage = (e: MessageEvent) => {
} }
break break
} }
case 'addAccount':
{
if (provider) {
provider.Accounts._addAccount(data.privateKey, data.balance)
}
break
}
case 'newAccount':
{
if (provider) {
provider.Accounts.newAccount((error, address: string) => {
if (error) {
self.postMessage({
cmd: 'newAccountResult',
error,
stamp: data.stamp
})
} else {
self.postMessage({
cmd: 'newAccountResult',
result: address,
stamp: data.stamp
})
}
})
}
break
}
} }
} }

@ -37,6 +37,20 @@ export function AccountUI (props: AccountProps) {
}) })
break break
case 'vm-london':
setPlusOpt({
classList: '',
title: 'Create a new account'
})
break
case 'vm-berlin':
setPlusOpt({
classList: '',
title: 'Create a new account'
})
break
case 'web3': case 'web3':
if (!props.personalMode) { if (!props.personalMode) {
setPlusOpt({ setPlusOpt({

Loading…
Cancel
Save