diff --git a/apps/remix-ide/src/app/providers/injected-provider.tsx b/apps/remix-ide/src/app/providers/injected-provider.tsx index 9a1f915128..696453c19a 100644 --- a/apps/remix-ide/src/app/providers/injected-provider.tsx +++ b/apps/remix-ide/src/app/providers/injected-provider.tsx @@ -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 diff --git a/apps/remix-ide/src/app/tabs/network-module.js b/apps/remix-ide/src/app/tabs/network-module.js index c1cc1e12b5..297dd29bb1 100644 --- a/apps/remix-ide/src/app/tabs/network-module.js +++ b/apps/remix-ide/src/app/tabs/network-module.js @@ -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 }) } diff --git a/apps/remix-ide/src/app/udapp/make-udapp.js b/apps/remix-ide/src/app/udapp/make-udapp.js index 0b8b13433a..f2980e0263 100644 --- a/apps/remix-ide/src/app/udapp/make-udapp.js +++ b/apps/remix-ide/src/app/udapp/make-udapp.js @@ -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({ diff --git a/apps/remix-ide/src/app/udapp/run-tab.js b/apps/remix-ide/src/app/udapp/run-tab.js index 6d8707e4ae..86a51eb326 100644 --- a/apps/remix-ide/src/app/udapp/run-tab.js +++ b/apps/remix-ide/src/app/udapp/run-tab.js @@ -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) } } }) diff --git a/apps/remix-ide/src/blockchain/execution-context.js b/apps/remix-ide/src/blockchain/execution-context.js index af9c9eefab..85c68a2160 100644 --- a/apps/remix-ide/src/blockchain/execution-context.js +++ b/apps/remix-ide/src/blockchain/execution-context.js @@ -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)) + } } } diff --git a/libs/remix-lib/src/execution/logsManager.ts b/libs/remix-lib/src/execution/logsManager.ts index 70e4ed9d41..6600c6c9a2 100644 --- a/libs/remix-lib/src/execution/logsManager.ts +++ b/libs/remix-lib/src/execution/logsManager.ts @@ -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) => { }) }