UNPKG

@subwallet-connect/torus

Version:

Torus SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern j

71 lines (70 loc) 3.07 kB
function torus(options) { const { buttonPosition, modalZIndex, apiKey, buildEnv, enableLogging, loginConfig, showTorusButton, integrity, whiteLabel } = options || {}; return () => { return { label: 'Torus', type: 'evm', getIcon: async () => (await import('./icon.js')).default, getInterface: async ({ chains }) => { const { default: Torus } = await import('@toruslabs/torus-embed'); const { createEIP1193Provider, ProviderRpcErrorCode, ProviderRpcError } = await import('@subwallet-connect/common'); const [chain] = chains; let instance = new Torus({ buttonPosition, modalZIndex, apiKey }); await instance.init({ buildEnv, enableLogging, network: { host: chain.rpcUrl || '', chainId: parseInt(chain.id), networkName: chain.label }, showTorusButton: showTorusButton, loginConfig, integrity, whiteLabel }); const torusProvider = instance.provider; const provider = createEIP1193Provider(torusProvider, { eth_requestAccounts: async () => { try { const accounts = await instance.login(); return accounts; } catch (error) { throw new ProviderRpcError({ code: ProviderRpcErrorCode.ACCOUNT_ACCESS_REJECTED, message: 'Account access rejected' }); } }, eth_selectAccounts: null, wallet_switchEthereumChain: async ({ params }) => { const chain = chains.find(({ id }) => id === params[0].chainId); if (!chain) throw new Error('chain must be set before switching'); await instance.setProvider({ host: chain.rpcUrl || '', chainId: parseInt(chain.id), networkName: chain.label }); return null; }, eth_chainId: async ({ baseRequest }) => { const chainId = await baseRequest({ method: 'eth_chainId' }); return `0x${parseInt(chainId).toString(16)}`; } }); provider.disconnect = () => instance.cleanUp(); return { provider, instance }; } }; }; } export default torus;