UNPKG

@okwallet/extension

Version:

OKX Wallet provides official SDK packages of multiple chains including [Ethereum](./wallet), [Aptos](./aptos-api), [Tron](./tron-api) and Solana. Developers can interact with different on-chain projects through OKX Wallet SDK.

77 lines (71 loc) 1.83 kB
import Web3 from 'web3'; import { chainsTypeMap } from '../constant'; const Evm = { getChainId: ({ provider }) => { return new Promise((resolve, reject) => { new Web3(provider).eth .getChainId() .then((chainId) => { resolve(chainId); }) .catch((e) => { reject(e); }); }); }, switchChain: ({ provider, chainId }) => { return new Promise((resolve, reject) => { provider .request({ method: 'wallet_switchEthereumChain', params: [{ chainId }], }) .then(() => { resolve(); }) .catch((e) => { reject(e); }); }); }, sendTransaction: ({ provider, chainName, payload }) => { // eslint-disable-next-line no-async-promise-executor return new Promise(async (resolve, reject) => { try { const currentChainId = await Evm.getChainId({ provider }); if (currentChainId !== chainsTypeMap.EVM[chainName].networkId) { await Evm.switchChain({ provider, chainId: chainsTypeMap.EVM[chainName].chainId, }); } } catch (e) { reject(e); } new Web3(provider).eth .sendTransaction(payload, (error, hash) => { if (!hash) { reject(error); } resolve({ hash }); }) .catch((e) => { reject(e); }); }); }, signMessage: ({ provider, payload }) => { return new Promise((resolve, reject) => { const { message, account } = payload; new Web3(provider).eth.personal .sign(message, account) .then((signature) => { resolve(signature); }) .catch((e) => { reject(e); }); }); }, }; export default Evm;