UNPKG

@0xfutbol/id

Version:

React component library with shared providers for 0xFutbol ID

79 lines (78 loc) 3.31 kB
'use strict';var index=require('./index-gEYw6hWC.js');require('react'),require('react/jsx-runtime'),require('@0xfutbol/id-sign'),require('react-use'),require('@0xfutbol/constants'),require('thirdweb'),require('@matchain/matchid-sdk-react'),require('@tanstack/react-query'),require('@matchain/matchid-sdk-react/index.css'),require('react-dom');/** * @internal */ async function onSessionProposal(options) { const { wallet, walletConnectClient, event, chains, onConnect } = options; const account = wallet.getAccount(); if (!account) { throw new Error("No account connected to provided wallet"); } const origin = event.verifyContext?.verified?.origin; if (origin) { await disconnectExistingSessions({ origin, walletConnectClient }); } const session = await acceptSessionProposal({ account, walletConnectClient, sessionProposal: event, chains, }); await index.cE(session); wallet.subscribe("disconnect", () => { index.cF({ session, walletConnectClient }); }); onConnect?.(session); } /** * @internal */ async function disconnectExistingSessions({ walletConnectClient, origin, }) { const sessions = await index.cG(); for (const session of sessions) { if (session.origin === origin) { await index.cF({ session, walletConnectClient }); } } } /** * @internal */ async function acceptSessionProposal({ account, walletConnectClient, sessionProposal, chains, }) { if (!sessionProposal.params.requiredNamespaces?.eip155 && !sessionProposal.params.optionalNamespaces?.eip155) { throw new Error("No EIP155 namespace found in Wallet Connect session proposal"); } const namespaces = { chains: [ ...Array.from(new Set([ ...(sessionProposal.params.requiredNamespaces?.eip155?.chains?.map((chain) => `${chain}:${account.address}`) ?? []), ...(sessionProposal.params.optionalNamespaces?.eip155?.chains?.map((chain) => `${chain}:${account.address}`) ?? []), ...(chains?.map((chain) => `eip155:${chain.id}:${account.address}`) ?? []), ])), ], methods: [ ...(sessionProposal.params.requiredNamespaces?.eip155?.methods ?? []), ...(sessionProposal.params.optionalNamespaces?.eip155?.methods ?? []), ], events: [ ...(sessionProposal.params.requiredNamespaces?.eip155?.events ?? []), ...(sessionProposal.params.optionalNamespaces?.eip155?.events ?? []), ], }; const approval = await walletConnectClient.approve({ id: sessionProposal.id, namespaces: { eip155: { accounts: namespaces.chains, methods: namespaces.methods, events: namespaces.events, }, }, }); const session = await approval.acknowledged(); return { topic: session.topic, origin: sessionProposal.verifyContext?.verified?.origin || "Unknown origin", }; }exports.acceptSessionProposal=acceptSessionProposal;exports.disconnectExistingSessions=disconnectExistingSessions;exports.onSessionProposal=onSessionProposal;//# sourceMappingURL=session-proposal-Coi5f5IM.js.map