UNPKG

@sky-mavis/tanto-wagmi

Version:
124 lines (119 loc) 5.21 kB
'use strict'; var tantoConnect = require('@sky-mavis/tanto-connect'); var core = require('@wagmi/core'); var viem = require('viem'); function roninWallet() { const connector = new tantoConnect.RoninWalletConnector(); const _connect = async (params) => { const { chainId } = await connector.connect(params?.chainId); const accounts = await connector.getAccounts(); return { accounts: accounts.map(viem.getAddress), chainId, }; }; const _getAccounts = async () => { const accounts = await connector.getAccounts(); return accounts.map(viem.getAddress); }; return core.createConnector(config => { const _switchChain = async ({ chainId }) => { const chain = config.chains.find(chain => chain.id === chainId); if (!chain) throw new viem.SwitchChainError(new core.ChainNotConfiguredError()); try { await connector.switchChain(chainId); return chain; } catch (error) { throw new viem.SwitchChainError(error); } }; const onChainChanged = (chainId) => { config.emitter.emit('change', { chainId }); }; const onAccountsChanged = (accounts) => { config.emitter.emit('change', { accounts: accounts.map(viem.getAddress) }); }; const onConnect = async (results) => { const accounts = await _getAccounts(); config.emitter.emit('connect', { accounts, chainId: results.chainId }); }; const onDisconnect = () => { config.storage?.removeItem('injected.connected'); config.emitter.emit('disconnect'); }; connector.on(tantoConnect.ConnectorEvent.CONNECT, onConnect); connector.on(tantoConnect.ConnectorEvent.DISCONNECT, onDisconnect); connector.on(tantoConnect.ConnectorEvent.ACCOUNTS_CHANGED, onAccountsChanged); connector.on(tantoConnect.ConnectorEvent.CHAIN_CHANGED, onChainChanged); return { icon: connector.icon, id: connector.id, name: connector.name, type: connector.type, connect: _connect, getAccounts: _getAccounts, switchChain: _switchChain, disconnect: connector.disconnect.bind(connector), getChainId: connector.getChainId.bind(connector), getProvider: connector.getProvider.bind(connector), isAuthorized: connector.isAuthorized.bind(connector), onAccountsChanged: connector.onAccountsChanged.bind(connector), onChainChanged: connector.onChainChanged.bind(connector), onDisconnect: connector.onDisconnect.bind(connector), }; }); } function waypoint(params) { const provider = tantoConnect.requestWaypointProvider(params); const connector = new tantoConnect.WaypointConnector({ provider }); const _connect = async (params) => { const { chainId } = await connector.connect(params?.chainId); const accounts = await connector.getAccounts(); return { accounts: accounts.map(viem.getAddress), chainId, }; }; const _getAccounts = async () => { const accounts = await connector.getAccounts(); return accounts.map(viem.getAddress); }; return core.createConnector(config => { const onChainChanged = (chainId) => { config.emitter.emit('change', { chainId }); }; const onAccountsChanged = (accounts) => { config.emitter.emit('change', { accounts: accounts.map(viem.getAddress) }); }; const onConnect = async (results) => { const accounts = await _getAccounts(); config.emitter.emit('connect', { accounts, chainId: results.chainId }); }; const onDisconnect = () => { config.emitter.emit('disconnect'); }; connector.on(tantoConnect.ConnectorEvent.CONNECT, onConnect); connector.on(tantoConnect.ConnectorEvent.DISCONNECT, onDisconnect); connector.on(tantoConnect.ConnectorEvent.ACCOUNTS_CHANGED, onAccountsChanged); connector.on(tantoConnect.ConnectorEvent.CHAIN_CHANGED, onChainChanged); return { icon: connector.icon, id: connector.id, name: connector.name, type: connector.type, connect: _connect, getAccounts: _getAccounts, disconnect: connector.disconnect.bind(connector), getChainId: connector.getChainId.bind(connector), getProvider: connector.getProvider.bind(connector), isAuthorized: connector.isAuthorized.bind(connector), onAccountsChanged: connector.onAccountsChanged.bind(connector), onChainChanged: connector.onChainChanged.bind(connector), onDisconnect: connector.onDisconnect.bind(connector), }; }); } exports.roninWallet = roninWallet; exports.waypoint = waypoint;