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. 30
      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.worker = null
this.provider = null
this.newAccountCallback = {}
}
getAccounts (cb) {
@ -44,6 +45,11 @@ class VMProvider {
this.accounts = {}
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
createVMAccount (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')
return '0x' + privateToAddress(privKey).toString('hex')
}
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) {

@ -41,6 +41,36 @@ self.onmessage = (e: MessageEvent) => {
})
}
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
case 'vm-london':
setPlusOpt({
classList: '',
title: 'Create a new account'
})
break
case 'vm-berlin':
setPlusOpt({
classList: '',
title: 'Create a new account'
})
break
case 'web3':
if (!props.personalMode) {
setPlusOpt({

Loading…
Cancel
Save