Ok, super wise Wappler devs. I’m stuck. I’m trying to integrate Wallet Connect.
The concept is a user will click a button, and that will display a modal so the user can connect their crypto wallet to the site.
I’m stuck on whether this should be a custom server connect module or an app connect component and how to implement it.
Any help is appreciated
Add Packages
- npm
npm install @web3modal/ethereum @web3modal/html @wagmi/core viem
Implementation
Start by importing Web3Modal and wagmi packages, then create wagmi config using your own settings or our default presets as shown below. Finally, pass wagmi config to Web3Modal as ethereumClient
.
import { EthereumClient, w3mConnectors, w3mProvider } from '@web3modal/ethereum'
import { Web3Modal } from '@web3modal/html'
import { configureChains, createConfig } from '@wagmi/core'
import { arbitrum, mainnet, polygon } from '@wagmi/core/chains'
const chains = [arbitrum, mainnet, polygon]
const projectId = 'YOUR_PROJECT_ID'
const { publicClient } = configureChains(chains, [w3mProvider({ projectId })])
const wagmiConfig = createConfig({
autoConnect: true,
connectors: w3mConnectors({ projectId, version: 1, chains }),
publicClient
})
const ethereumClient = new EthereumClient(wagmiConfig, chains)
const web3modal = new Web3Modal({ projectId }, ethereumClient)
Add connect button
Add our pre-built button component in your app to open/close connection and account modals. Alternatively, use your own button.
<body> <w3m-core-button></w3m-core-button></body>
Use wagmi core actions
wagmi core provides everything you’ll need to start working with accounts, contracts, chains and much more.
import { getAccount, readContract } from '@wagmi/core'