/
useEthersWalletClient.tsx
38 lines (32 loc) 路 1.03 KB
/
useEthersWalletClient.tsx
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
32
33
34
35
36
37
38
import { ZERO_ADDRESS } from '@lenster/data/constants';
import { CHAIN_ID } from 'src/constants';
import type { Address } from 'viem';
import { useWalletClient } from 'wagmi';
const useEthersWalletClient = (): {
data: {
getAddress: () => Promise<Address>;
signMessage: (message: string) => Promise<string>;
};
isLoading: boolean;
} => {
const { data, isLoading } = useWalletClient({ chainId: CHAIN_ID });
const ethersWalletClient = {
getAddress: async (): Promise<Address> => {
return (await data?.account.address) ?? ZERO_ADDRESS;
},
signMessage: async (message: string): Promise<string> => {
const signature = await data?.signMessage({ message });
return signature ?? '';
}
};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { signMessage, ...rest } = data ?? {};
const mergedWalletClient = {
data: {
...ethersWalletClient,
...{ ...rest }
}
};
return { data: mergedWalletClient.data, isLoading };
};
export default useEthersWalletClient;