70 lines
1.4 KiB
JavaScript
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]
|
|
} |