turn API into promise

pull/1/head
yann300 6 years ago
parent f09f7616f9
commit d766581644
  1. 45
      src/app.js
  2. 26
      src/app/editor/SourceHighlighters.js
  3. 1
      src/app/files/browser-files-tree.js
  4. 6
      src/app/tabs/compile-tab.js
  5. 60
      src/universal-dapp.js

@ -253,32 +253,43 @@ class App {
})
}
getExecutionContextProvider (cb) {
cb(null, executionContext.getProvider())
getExecutionContextProvider () {
return new Promise((resolve, reject) => {
resolve(executionContext.getProvider())
})
}
getProviderEndpoint (cb) {
if (executionContext.getProvider() === 'web3') {
cb(null, executionContext.web3().currentProvider.host)
} else {
cb('no endpoint: current provider is either injected or vm')
}
getProviderEndpoint () {
return new Promise((resolve, reject) => {
if (executionContext.getProvider() === 'web3') {
resolve(executionContext.web3().currentProvider.host)
} else {
reject('no endpoint: current provider is either injected or vm')
}
})
}
detectNetWork (cb) {
executionContext.detectNetwork((error, network) => {
cb(error, network)
detectNetWork () {
return new Promise((resolve, reject) => {
executionContext.detectNetwork((error, network) => {
if (error) return reject(error)
resolve(network)
})
})
}
addProvider (name, url, cb) {
executionContext.addProvider({ name, url })
cb()
addProvider (name, url) {
return new Promise((resolve, reject) => {
executionContext.addProvider({ name, url })
resolve()
})
}
removeProvider (name, cb) {
executionContext.removeProvider(name)
cb()
removeProvider (name) {
return new Promise((resolve, reject) => {
executionContext.removeProvider(name)
resolve()
})
}
}

@ -18,19 +18,25 @@ class SourceHighlighters {
// TODO what to do with mod?
async highlight (mod, lineColumnPos, filePath, hexColor) {
let position
try {
position = JSON.parse(lineColumnPos)
} catch (e) {
throw e
}
if (!this.highlighters[mod]) this.highlighters[mod] = new SourceHighlighter()
this.highlighters[mod].currentSourceLocation(null)
this.highlighters[mod].currentSourceLocationFromfileName(position, filePath, hexColor)
return new Promise((resolve, reject) => {
let position
try {
position = JSON.parse(lineColumnPos)
} catch (e) {
throw e
}
if (!this.highlighters[mod]) this.highlighters[mod] = new SourceHighlighter()
this.highlighters[mod].currentSourceLocation(null)
this.highlighters[mod].currentSourceLocationFromfileName(position, filePath, hexColor)
resolve()
})
}
async discardHighlight (mod) {
if (this.highlighters[mod]) this.highlighters[mod].currentSourceLocation(null)
return new Promise((resolve, reject) => {
if (this.highlighters[mod]) this.highlighters[mod].currentSourceLocation(null)
resolve()
})
}
}

@ -132,6 +132,7 @@ function FilesTree (name, storage) {
}
this.profile = function () {
// TODO should make them promisable
return {
name: this.type,
methods: ['get', 'set', 'remove'],

@ -143,6 +143,12 @@ class CompileTab {
}
}
getCompilationResult () {
return new Promise((resolve, reject) => {
resolve(this.compileTabLogic.compiler.lastCompilationResult)
})
}
/*********
* SUB-COMPONENTS
*/

@ -33,7 +33,7 @@ UniversalDApp.prototype.profile = function () {
return {
name: 'udapp',
displayName: 'universal dapp',
methods: ['runTx', 'getAccounts', 'createVMAccount'],
methods: ['runTestTx', 'getAccounts', 'createVMAccount'],
description: 'service - run transaction and access account'
}
}
@ -73,11 +73,13 @@ UniversalDApp.prototype.resetAPI = function (transactionContextAPI) {
}
UniversalDApp.prototype.createVMAccount = function (privateKey, balance, cb) {
if (executionContext.getProvider() !== 'vm') return cb('plugin API does not allow creating a new account through web3 connection. Only vm mode is allowed')
this._addAccount(privateKey, balance)
executionContext.vm().stateManager.cache.flush(function () {})
privateKey = Buffer.from(privateKey, 'hex')
cb(null, '0x' + ethJSUtil.privateToAddress(privateKey).toString('hex'))
return new Promise((resolve, reject) => {
if (executionContext.getProvider() !== 'vm') return reject('plugin API does not allow creating a new account through web3 connection. Only vm mode is allowed')
this._addAccount(privateKey, balance)
executionContext.vm().stateManager.cache.flush(function () {})
privateKey = Buffer.from(privateKey, 'hex')
resolve('0x' + ethJSUtil.privateToAddress(privateKey).toString('hex'))
})
}
UniversalDApp.prototype.newAccount = function (password, passwordPromptCb, cb) {
@ -116,24 +118,36 @@ UniversalDApp.prototype._addAccount = function (privateKey, balance) {
}
}
// TODO should remove this cb
UniversalDApp.prototype.getAccounts = function (cb) {
var self = this
if (!executionContext.isVM()) {
// Weirdness of web3: listAccounts() is sync, `getListAccounts()` is async
// See: https://github.com/ethereum/web3.js/issues/442
if (this._deps.config.get('settings/personal-mode')) {
return executionContext.web3().personal.getListAccounts(cb)
return new Promise((resolve, reject) => {
if (!executionContext.isVM()) {
// Weirdness of web3: listAccounts() is sync, `getListAccounts()` is async
// See: https://github.com/ethereum/web3.js/issues/442
if (this._deps.config.get('settings/personal-mode')) {
return executionContext.web3().personal.getListAccounts((error, accounts) => {
if (cb) cb(error, accounts)
if (error) return reject(error)
resolve(accounts)
})
} else {
executionContext.web3().eth.getAccounts((error, accounts) => {
if (cb) cb(error, accounts)
if (error) return reject(error)
resolve(accounts)
})
}
} else {
executionContext.web3().eth.getAccounts(cb)
}
} else {
if (!self.accounts) {
return cb('No accounts?')
if (!self.accounts) {
if (cb) cb('No accounts?')
reject('No accounts?')
return
}
if (cb) cb(null, Object.keys(self.accounts))
resolve(Object.keys(self.accounts))
}
cb(null, Object.keys(self.accounts))
}
})
}
UniversalDApp.prototype.getBalance = function (address, cb) {
@ -235,12 +249,12 @@ UniversalDApp.prototype.getInputs = function (funABI) {
UniversalDApp.prototype.runTestTx = function (tx) {
return new Promise((resolve, reject) => {
executionContext.detectNetwork((error, network) => {
if (error) reject(error)
if (error) return reject(error)
if (network.name === 'Main' && network.id === '1') {
reject(new Error('It is not allowed to make this action against mainnet'))
return reject(new Error('It is not allowed to make this action against mainnet'))
}
this.silentRunTx(tx, (error, result) => {
if (error) reject(error)
if (error) return reject(error)
resolve({
transactionHash: result.transactionHash,
status: result.result.status,

Loading…
Cancel
Save