@gelatonetwork/smartwallet-react-privy 0.0.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +3 -0
- package/_dist/components/connect.d.ts +7 -0
- package/_dist/components/connect.d.ts.map +1 -0
- package/_dist/components/connect.js +9 -0
- package/_dist/components/connect.js.map +1 -0
- package/_dist/index.d.ts +3 -0
- package/_dist/index.d.ts.map +1 -0
- package/_dist/index.js +3 -0
- package/_dist/index.js.map +1 -0
- package/_dist/provider.d.ts +7 -0
- package/_dist/provider.d.ts.map +1 -0
- package/_dist/provider.js +99 -0
- package/_dist/provider.js.map +1 -0
- package/_dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +42 -0
- package/src/components/connect.tsx +21 -0
- package/src/index.ts +5 -0
- package/src/provider.tsx +167 -0
- package/tsconfig.build.json +22 -0
- package/tsconfig.json +6 -0
package/CHANGELOG.md
ADDED
package/README.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { FC, ReactNode } from "react";
|
2
|
+
interface GelatoSmartWalletPrivyConnectButtonProps {
|
3
|
+
children: ReactNode;
|
4
|
+
}
|
5
|
+
export declare const GelatoSmartWalletPrivyConnectButton: FC<GelatoSmartWalletPrivyConnectButtonProps>;
|
6
|
+
export {};
|
7
|
+
//# sourceMappingURL=connect.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/components/connect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3C,UAAU,wCAAwC;IAChD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,mCAAmC,EAAE,EAAE,CAAC,wCAAwC,CAa5F,CAAC"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { useLogin, usePrivy } from "@privy-io/react-auth";
|
3
|
+
export const GelatoSmartWalletPrivyConnectButton = ({ children }) => {
|
4
|
+
const { ready, authenticated } = usePrivy();
|
5
|
+
const { login } = useLogin();
|
6
|
+
const disableLogin = !ready || (ready && authenticated);
|
7
|
+
return (_jsx("button", { type: "button", disabled: disableLogin, onClick: login, children: children }));
|
8
|
+
};
|
9
|
+
//# sourceMappingURL=connect.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/components/connect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAO1D,MAAM,CAAC,MAAM,mCAAmC,GAAiD,CAAC,EAChG,QAAQ,EACT,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE7B,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAExD,OAAO,CACL,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,YACzD,QAAQ,GACF,CACV,CAAC;AACJ,CAAC,CAAC"}
|
package/_dist/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,gCAAgC,EACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAC"}
|
package/_dist/index.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qCAAqC,EACrC,gCAAgC,EACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { wallet } from "@gelatodigital/smartwallet-react-types";
|
2
|
+
import type { FC } from "react";
|
3
|
+
export declare const useGelatoSmartWalletPrivyContext: () => wallet.ProviderContext;
|
4
|
+
type GelatoSmartWalletPrivyContextProps = wallet.ProviderProps;
|
5
|
+
export declare const GelatoSmartWalletPrivyContextProvider: FC<GelatoSmartWalletPrivyContextProps>;
|
6
|
+
export {};
|
7
|
+
//# sourceMappingURL=provider.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAS3C,eAAO,MAAM,gCAAgC,8BAQ5C,CAAC;AAEF,KAAK,kCAAkC,GAAG,MAAM,CAAC,aAAa,CAAC;AAwG/D,eAAO,MAAM,qCAAqC,EAAE,EAAE,CAAC,kCAAkC,CAyBxF,CAAC"}
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { PrivyProvider, usePrivy, useSignAuthorization, useWallets } from "@privy-io/react-auth";
|
3
|
+
import { WagmiProvider, createConfig } from "@privy-io/wagmi";
|
4
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
5
|
+
import { ChainId } from "caip";
|
6
|
+
import { createContext, useContext, useEffect, useState } from "react";
|
7
|
+
import { createWalletClient, custom } from "viem";
|
8
|
+
import * as chains from "viem/chains";
|
9
|
+
import { extractChain } from "viem/utils";
|
10
|
+
const GelatoSmartWalletPrivyProviderContext = createContext(undefined);
|
11
|
+
export const useGelatoSmartWalletPrivyContext = () => {
|
12
|
+
const context = useContext(GelatoSmartWalletPrivyProviderContext);
|
13
|
+
if (!context) {
|
14
|
+
throw new Error("useGelatoSmartWalletPrivyProvider must be used within a GelatoSmartWalletPrivyProvider");
|
15
|
+
}
|
16
|
+
return context;
|
17
|
+
};
|
18
|
+
const GelatoSmartWalletPrivyInternal = ({ children, wagmi }) => {
|
19
|
+
const { ready, authenticated, logout } = usePrivy();
|
20
|
+
const { wallets, ready: walletsReady } = useWallets();
|
21
|
+
const { signAuthorization } = useSignAuthorization();
|
22
|
+
const [walletClient, setWalletClient] = useState(null);
|
23
|
+
const logoutWrapper = async () => {
|
24
|
+
if (!walletClient) {
|
25
|
+
return;
|
26
|
+
}
|
27
|
+
setWalletClient(null);
|
28
|
+
await logout();
|
29
|
+
};
|
30
|
+
const switchNetwork = async (chain) => {
|
31
|
+
if (!walletClient) {
|
32
|
+
return;
|
33
|
+
}
|
34
|
+
const primaryWallet = wallets[0];
|
35
|
+
await primaryWallet.switchChain(chain.id);
|
36
|
+
walletClient.switchChain({ id: chain.id });
|
37
|
+
};
|
38
|
+
useEffect(() => {
|
39
|
+
if (!ready || !walletsReady) {
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
if (!authenticated || !wallets || wallets.length === 0) {
|
43
|
+
setWalletClient(null);
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
const fetchWalletClient = async () => {
|
47
|
+
const primaryWallet = wallets[0];
|
48
|
+
try {
|
49
|
+
// Privy wallet provides chainId in CAIP2 format
|
50
|
+
const { reference: chainId } = ChainId.parse(primaryWallet.chainId);
|
51
|
+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
52
|
+
const chain = extractChain({ chains: Object.values(chains), id: Number(chainId) });
|
53
|
+
if (!chain) {
|
54
|
+
return;
|
55
|
+
}
|
56
|
+
const provider = await primaryWallet.getEthereumProvider();
|
57
|
+
const walletClient = createWalletClient({
|
58
|
+
account: primaryWallet.address,
|
59
|
+
chain,
|
60
|
+
transport: custom(provider)
|
61
|
+
});
|
62
|
+
walletClient.signAuthorization = async (parameters) => {
|
63
|
+
const { chainId, nonce } = parameters;
|
64
|
+
const contractAddress = parameters.contractAddress ?? parameters.address;
|
65
|
+
if (!contractAddress) {
|
66
|
+
throw new Error("Contract address is required");
|
67
|
+
}
|
68
|
+
const signedAuthorization = await signAuthorization({
|
69
|
+
contractAddress,
|
70
|
+
chainId,
|
71
|
+
nonce
|
72
|
+
});
|
73
|
+
return signedAuthorization;
|
74
|
+
};
|
75
|
+
setWalletClient(walletClient);
|
76
|
+
}
|
77
|
+
catch (error) {
|
78
|
+
console.error("Failed to get wallet client:", error);
|
79
|
+
}
|
80
|
+
};
|
81
|
+
fetchWalletClient();
|
82
|
+
}, [ready, wallets, walletsReady, authenticated, signAuthorization]);
|
83
|
+
return (_jsx(GelatoSmartWalletPrivyProviderContext.Provider, { value: {
|
84
|
+
wagmi: {
|
85
|
+
config: wagmi.config,
|
86
|
+
client: walletClient
|
87
|
+
},
|
88
|
+
logout: logoutWrapper,
|
89
|
+
switchNetwork
|
90
|
+
}, children: children }));
|
91
|
+
};
|
92
|
+
export const GelatoSmartWalletPrivyContextProvider = ({ children, settings }) => {
|
93
|
+
const queryClient = new QueryClient();
|
94
|
+
const wagmiConfig = settings.wagmi ? createConfig(settings.wagmi.config) : undefined;
|
95
|
+
return (_jsx(PrivyProvider, { appId: settings.waas.appId, config: {
|
96
|
+
defaultChain: settings.defaultChain ?? chains.sepolia
|
97
|
+
}, children: _jsx(GelatoSmartWalletPrivyInternal, { wagmi: { config: wagmiConfig }, children: wagmiConfig ? (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(WagmiProvider, { config: wagmiConfig, children: children }) })) : (children) }) }));
|
98
|
+
};
|
99
|
+
//# sourceMappingURL=provider.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
|