ipc provider and callbacks

pull/5370/head
Oleksii Kosynskyi 2 years ago
parent aeca06146c
commit fb0286e8cb
  1. 4
      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. 8
      apps/remix-ide/src/blockchain/execution-context.js
  5. 9
      libs/remix-lib/src/execution/logsManager.ts

@ -84,8 +84,8 @@ export abstract class InjectedProvider extends Plugin implements IProvider {
} }
try { try {
let resultData let resultData
if (web3Provider.send) resultData = await web3Provider.send(data.method, data.params) if (web3Provider.request) resultData = await web3Provider.request({ method: data.method, params: data.params})
else 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 { else {
resolve({ jsonrpc: '2.0', error: 'provider not valid', id: data.id }) resolve({ jsonrpc: '2.0', error: 'provider not valid', id: data.id })
return return

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

@ -10,13 +10,21 @@ export function makeUdapp (blockchain, compilersArtefacts, logHtmlCallback) {
if (_transactionReceipts[tx.hash]) { if (_transactionReceipts[tx.hash]) {
return cb(null, _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) { if (error) {
return cb(error) return cb(error)
} }
_transactionReceipts[tx.hash] = receipt _transactionReceipts[tx.hash] = receipt
cb(null, 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({ const txlistener = blockchain.getTxListener({

@ -74,7 +74,7 @@ export class ExecutionContext {
if (!web3.currentProvider) { if (!web3.currentProvider) {
return callback('No provider set') return callback('No provider set')
} }
web3.eth.net.getId((err, id) => { const cb = (err, id) => {
let name = null let name = null
if (err) name = 'Unknown' if (err) name = 'Unknown'
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
@ -95,7 +95,11 @@ export class ExecutionContext {
} else { } else {
callback(err, { id, name, lastBlock: this.lastBlock, currentFork: this.currentFork }) 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) { checkBlock (blockNumber, block, web3) {
eachOf(block.transactions, (tx: any, i, next) => { eachOf(block.transactions, (tx: any, i, next) => {
const txHash = '0x' + tx.hash().toString('hex') const txHash = '0x' + tx.hash().toString('hex')
const cb = (_error, receipt) => {
web3.eth.getTransactionReceipt(txHash, (_error, receipt) => {
for (const log of receipt.logs) { for (const log of receipt.logs) {
this.oldLogs.push({ type: 'block', blockNumber, block, tx, log, txNumber: i }) this.oldLogs.push({ type: 'block', blockNumber, block, tx, log, txNumber: i })
const subscriptions = this.getSubscriptionsFor({ type: 'block', blockNumber, block, tx, log }) const subscriptions = this.getSubscriptionsFor({ type: 'block', blockNumber, block, tx, log })
@ -46,7 +45,11 @@ export class LogsManager {
this.transmit(response) 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) => { }, (_err) => {
}) })
} }

Loading…
Cancel
Save