import Web3 from "web3" import Web3Modal from "web3modal" import WalletConnectProvider from "@walletconnect/web3-provider" import { config } from '../config' import CoinbaseWalletSDK from "@coinbase/wallet-sdk" let provider let providerOptions = {} if (config.ENABLE_WALLETCONNECT) { providerOptions.walletconnct = { package: WalletConnectProvider, options: { infuraId: config.INFURAL_ID, }, } } if (config.ENABLE_COINBASE) { providerOptions.coinbasewallet = { package: CoinbaseWalletSDK, options: { appName: config.APP_NAME, infuraId: config.INFURAL_ID, darkMode: false, }, } } const web3Modal = new Web3Modal({ network: "mainnet", cacheProvider: true, providerOptions, disableInjectedProvider: false, }) export const connectWallet = async () => { try { provider = await web3Modal.connect() provider.enable() } catch (err) { return false } return true } export const addEventListeners = async () => { if (!provider) { return false } provider.on('accountChanged', async (accounts) => { }) provider.on('chainChanged', async (accounts) => { }) provider.on('networkChanged', async (networkId) => { }) } export const fetchAccount = async () => { const web3 = new Web3(provider) const accounts = await web3.eth.getAccounts() return accounts[0] }