import WalletConnect from '@walletconnect/client'; import QRCodeModal from '@walletconnect/qrcode-modal'; let connector: WalletConnect | null = null; export function createConnector() { if (!connector) { connector = new WalletConnect({ bridge: 'https://bridge.walletconnect.org' }); } return connector; } export async function connect() { const c = createConnector(); if (!c.connected) { await c.createSession(); QRCodeModal.open(c.uri, () => {}); } return new Promise((resolve, reject) => { c.on('connect', (error: any, payload: any) => { if (error) return reject(error); QRCodeModal.close(); const { accounts, chainId } = payload.params[0]; resolve({ accounts, chainId }); }); c.on('disconnect', (err: any) => { console.log('Disconnected', err); }); }); }