import WalletConnectProvider from '@walletconnect/web3-provider' // Test: https://test.walletconnect.org/ // Docs: https://docs.walletconnect.com/1.0/quick-start/dapps/web3-provider // WalletConnectProvider source code: https://github.com/WalletConnect/walletconnect-monorepo/blob/v1.0/packages/providers/web3-provider/src/index.ts export { WalletConnectProvider } export class Walletconnect { // @todo update check static async check() { if (!WalletConnectProvider) { console.warn( 'Walletconnect unavailable: please add below script to enable the feature: ', ) return false } return true } static async connect(infuraId: string, options?: any) { const provider = new WalletConnectProvider({ infuraId, ...options, }) // fix: If user reject session, provider.enable() will be stuck and can't be resolved. // source code: https://github.com/WalletConnect/walletconnect-monorepo/blob/v1.0/packages/providers/web3-provider/src/index.ts return new Promise(async (resolve, reject) => { provider.wc.on('disconnect', (err, payload) => { if (!provider.connected) { console.log(err, payload) reject(new Error('User rejected the request.')) } }) try { await provider.enable() } catch (e: any) { reject(new Error(e)) return } resolve(provider) }) } }