ipc provider and callbacks

pull/5370/head
Oleksii Kosynskyi 2 years ago
parent aeca06146c
commit fb0286e8cb
  1. 8
      apps/remix-ide/src/app/providers/injected-provider.tsx
  2. 3
      apps/remix-ide/src/app/tabs/network-module.js
  3. 10
      apps/remix-ide/src/app/udapp/make-udapp.js
  4. 2
      apps/remix-ide/src/app/udapp/run-tab.js
  5. 8
      apps/remix-ide/src/blockchain/execution-context.js
  6. 9
      libs/remix-lib/src/execution/logsManager.ts

@ -29,7 +29,7 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
web3Provider.on('chainChanged', this.listenerChainChanged);
} catch (error) {
console.log('unable to listen on context changed')
}
}
}
onDeactivation(): void {
@ -39,7 +39,7 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
web3Provider.removeListener('chainChanged', this.listenerChainChanged)
} catch (error) {
console.log('unable to remove listener on context changed')
}
}
}
askPermission (throwIfNoInjectedProvider) {
@ -84,8 +84,8 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
}
try {
let resultData
if (web3Provider.send) resultData = await web3Provider.send(data.method, data.params)
else if (web3Provider.request) resultData = await web3Provider.request({ method: data.method, params: data.params})
if (web3Provider.request) resultData = await web3Provider.request({ method: data.method, params: data.params})
else if (web3Provider.send) resultData = await web3Provider.send(data.method, data.params)
else {
resolve({ jsonrpc: '2.0', error: 'provider not valid', id: data.id })
return

@ -1,6 +1,7 @@
import { Plugin } from '@remixproject/engine'
import * as packageJson from '../../../../../package.json'
import { Web3 } from 'web3'
import IpcProvider from 'web3-providers-ipc'
export const profile = {
name: 'network',
@ -49,7 +50,7 @@ export class NetworkModule extends Plugin {
/** Add a custom network to the list of available networks */
addNetwork (network) { // { name, url }
const provider = network.url === 'ipc' ? new Web3.providers.IpcProvider() : new Web3.providers.HttpProvider(network.url)
const provider = network.url === 'ipc' ? new IpcProvider() : new Web3.providers.HttpProvider(network.url)
this.blockchain.addProvider({ name: network.name, provider })
}

@ -10,13 +10,21 @@ export function makeUdapp (blockchain, compilersArtefacts, logHtmlCallback) {
if (_transactionReceipts[tx.hash]) {
return cb(null, _transactionReceipts[tx.hash])
}
blockchain.web3().eth.getTransactionReceipt(tx.hash, (error, receipt) => {
let res = blockchain.web3().eth.getTransactionReceipt(tx.hash, (error, receipt) => {
if (error) {
return cb(error)
}
_transactionReceipts[tx.hash] = receipt
cb(null, receipt)
})
if(res && typeof res.then ==='function'){
res.then((receipt)=>{
_transactionReceipts[tx.hash] = receipt
cb(null, receipt)
}).catch((error)=>{
cb(error)
})
}
}
const txlistener = blockchain.getTxListener({

@ -120,7 +120,7 @@ export class RunTab extends ViewPlugin {
},
provider: {
async sendAsync (payload) {
return udapp.call(name, 'sendAsync', payload)
return udapp.call(name, 'sendAsync', payload)
}
}
})

@ -74,7 +74,7 @@ export class ExecutionContext {
if (!web3.currentProvider) {
return callback('No provider set')
}
web3.eth.net.getId((err, id) => {
const cb = (err, id) => {
let name = null
if (err) name = 'Unknown'
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
@ -95,7 +95,11 @@ export class ExecutionContext {
} else {
callback(err, { id, name, lastBlock: this.lastBlock, currentFork: this.currentFork })
}
})
}
const res = web3.eth.net.getId(cb)
if(res && typeof res.then ==='function'){
res.then(id=>cb(null,id)).catch(err=>cb(err))
}
}
}

@ -19,8 +19,7 @@ export class LogsManager {
checkBlock (blockNumber, block, web3) {
eachOf(block.transactions, (tx: any, i, next) => {
const txHash = '0x' + tx.hash().toString('hex')
web3.eth.getTransactionReceipt(txHash, (_error, receipt) => {
const cb = (_error, receipt) => {
for (const log of receipt.logs) {
this.oldLogs.push({ type: 'block', blockNumber, block, tx, log, txNumber: i })
const subscriptions = this.getSubscriptionsFor({ type: 'block', blockNumber, block, tx, log })
@ -46,7 +45,11 @@ export class LogsManager {
this.transmit(response)
}
}
})
}
const res = web3.eth.getTransactionReceipt(txHash,cb)
if(res && typeof res.then === 'function'){
res.then((receipt) => cb(null, receipt)).catch(err => cb(err,null))
}
}, (_err) => {
})
}

Loading…
Cancel
Save