@0xsequence/connect
Version:
Connect package for Sequence Web SDK
62 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useListAccounts = void 0;
const react_query_1 = require("@tanstack/react-query");
const wagmi_1 = require("wagmi");
/**
* Hook to list all accounts associated with the current WaaS session.
* Uses React Query for proper async state management.
*
* @returns {UseListAccountsResult} Object containing the accounts data, loading state, error state, and refetch function
*
* @example
* ```tsx
* function AccountsList() {
* const { data, isLoading, error, refetch } = useListAccounts()
*
* if (isLoading) return <div>Loading accounts...</div>
* if (error) return <div>Error: {error.message}</div>
*
* return (
* <div>
* <button onClick={() => refetch()}>Refresh Accounts</button>
* {data?.accounts.map(account => (
* <div key={account.id}>{account.address}</div>
* ))}
* </div>
* )
* }
* ```
*/
const useListAccounts = () => {
const connections = (0, wagmi_1.useConnections)();
const { data, isLoading, error, refetch: reactQueryRefetch } = (0, react_query_1.useQuery)({
queryKey: ['waas', 'listAccounts'],
queryFn: async () => {
const waasConnection = connections.find(c => c.connector.id.includes('waas'));
if (!waasConnection) {
throw new Error('No WaaS connector found');
}
const sequenceWaas = waasConnection.connector.sequenceWaas;
if (!sequenceWaas) {
throw new Error('WaaS instance not properly initialized');
}
return await sequenceWaas.listAccounts();
},
// Only run the query if we have connections
enabled: connections.length > 0,
// Cache the results for 1 minute
staleTime: 60 * 1000
});
const refetch = async () => {
await reactQueryRefetch();
};
return {
data,
isLoading,
error: error,
refetch
};
};
exports.useListAccounts = useListAccounts;
//# sourceMappingURL=useListAccounts.js.map