-
Notifications
You must be signed in to change notification settings - Fork 480
Expand file tree
/
Copy pathuseGetWalletCapabilities.ts
More file actions
31 lines (25 loc) · 1.02 KB
/
useGetWalletCapabilities.ts
File metadata and controls
31 lines (25 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { useQuery } from '@tanstack/react-query';
import { useAccount } from 'wagmi';
import { useWalletClient } from 'wagmi';
export type WalletCapabilities = {
[chainId: number]: boolean;
};
export const useGetWalletCapabilities = () => {
const { address } = useAccount();
const { data: walletClient } = useWalletClient();
return useQuery({
queryFn: async () => {
if (!walletClient || !address) return null;
const capabilities = await walletClient.getCapabilities();
// Transform capabilities into a simple boolean map
const simplifiedCapabilities: WalletCapabilities = {};
Object.entries(capabilities).forEach(([chainId, chainCapabilities]) => {
const atomicStatus = (chainCapabilities as any)?.atomic?.status;
simplifiedCapabilities[Number(chainId)] = atomicStatus === 'supported' || atomicStatus === 'ready';
});
return simplifiedCapabilities;
},
queryKey: ['walletCapabilities', address],
enabled: !!walletClient && !!address,
});
};