cwfront/src/lib/eth.js

70 lines
1.4 KiB
JavaScript

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]
}