|
1 | 1 | // !! if you change the location of this file, remember to change `extraResources` in package.json as well !!
|
2 | 2 | /* eslint-disable max-classes-per-file */
|
3 | 3 | /* eslint-disable */
|
4 |
| -const { Buffer } = require('buffer'); |
5 |
| -const { ipcRenderer } = require('electron'); |
| 4 | +const { ipcRenderer, contextBridge } = require('electron'); |
6 | 5 | const EventEmitter = require('events');
|
7 | 6 |
|
8 | 7 | class RPCServer {
|
@@ -568,4 +567,107 @@ const providerConfig = {
|
568 | 567 | rpcUrl: 'https://evm.cronos.org',
|
569 | 568 | isDebug: true,
|
570 | 569 | };
|
571 |
| -window.ethereum = new window.desktopWallet.Provider(providerConfig); |
| 570 | + |
| 571 | +const provider = new Web3Provider(providerConfig); |
| 572 | + |
| 573 | +ipcRenderer.on('getAddress', (event, args) => { |
| 574 | + const address = args[0]; |
| 575 | + |
| 576 | + contextBridge.exposeInMainWorld('ethereum', { |
| 577 | + address, |
| 578 | + ready: true, |
| 579 | + isDesktopWallet: true, |
| 580 | + setConfig: (config, emitChanges) => { |
| 581 | + provider.setConfig(config, emitChanges); |
| 582 | + }, |
| 583 | + request: payload => { |
| 584 | + return provider.request(payload); |
| 585 | + }, |
| 586 | + setAddress: address => { |
| 587 | + provider.setAddress(address); |
| 588 | + }, |
| 589 | + sendResponse: (id, result) => { |
| 590 | + provider.sendResponse(id, result); |
| 591 | + }, |
| 592 | + sendError: (id, error) => { |
| 593 | + provider.sendError(id, error); |
| 594 | + }, |
| 595 | + eth_accounts: () => { |
| 596 | + return provider.eth_accounts(); |
| 597 | + }, |
| 598 | + eth_coinbase: () => { |
| 599 | + return provider.eth_coinbase(); |
| 600 | + }, |
| 601 | + net_version: () => { |
| 602 | + return provider.net_version(); |
| 603 | + }, |
| 604 | + eth_chainId: () => { |
| 605 | + return provider.eth_chainId(); |
| 606 | + }, |
| 607 | + eth_sign: payload => { |
| 608 | + return provider.eth_sign(payload); |
| 609 | + }, |
| 610 | + personal_sign: payload => { |
| 611 | + return provider.personal_sign(payload); |
| 612 | + }, |
| 613 | + personal_ecRecover: payload => { |
| 614 | + return provider.personal_ecRecover(payload); |
| 615 | + }, |
| 616 | + eth_signTypedData: (payload, useV4) => { |
| 617 | + return provider.eth_signTypedData(payload, useV4); |
| 618 | + }, |
| 619 | + eth_sendTransaction: payload => { |
| 620 | + return provider.eth_sendTransaction(payload); |
| 621 | + }, |
| 622 | + eth_requestAccounts: payload => { |
| 623 | + return provider.eth_requestAccounts(payload); |
| 624 | + }, |
| 625 | + wallet_watchAsset: payload => { |
| 626 | + return provider.wallet_watchAsset(payload); |
| 627 | + }, |
| 628 | + wallet_addEthereumChain: payload => { |
| 629 | + return provider.wallet_addEthereumChain(payload); |
| 630 | + }, |
| 631 | + wallet_switchEthereumChain: payload => { |
| 632 | + return provider.wallet_switchEthereumChain(payload); |
| 633 | + }, |
| 634 | + isConnected: () => { |
| 635 | + return provider.isConnected(); |
| 636 | + }, |
| 637 | + enable: () => { |
| 638 | + return provider.enable(); |
| 639 | + }, |
| 640 | + send: payload => { |
| 641 | + return provider.send(payload); |
| 642 | + }, |
| 643 | + sendAsync: (payload, callback) => { |
| 644 | + return provider.sendAsync(payload, callback); |
| 645 | + }, |
| 646 | + addEventListener: (event, callback) => { |
| 647 | + provider.addListener(event, callback); |
| 648 | + }, |
| 649 | + on: (event, callback) => { |
| 650 | + provider.on(event, callback); |
| 651 | + }, |
| 652 | + once: (event, callback) => { |
| 653 | + provider.once(event, callback); |
| 654 | + }, |
| 655 | + removeListener: (event, callback) => { |
| 656 | + provider.removeListener(event, callback); |
| 657 | + }, |
| 658 | + removeAllListeners: event => { |
| 659 | + provider.removeAllListeners(event); |
| 660 | + }, |
| 661 | + emit: (event, ...args) => { |
| 662 | + provider.emit(event, ...args); |
| 663 | + }, |
| 664 | + }) |
| 665 | + contextBridge.exposeInMainWorld('desktopWallet', { |
| 666 | + Provider: Web3Provider, |
| 667 | + postMessage: arg => { |
| 668 | + ipcRenderer.sendToHost('dapp', arg); |
| 669 | + }, |
| 670 | + }) |
| 671 | + |
| 672 | +}) |
| 673 | + |
0 commit comments