@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 ADDED
@@ -0,0 +1,9 @@
1
+ # @gelatonetwork/smartwallet-react-privy
2
+
3
+ ## 0.0.2-alpha.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 5474e52: chore: alpha release
8
+ - Updated dependencies [5474e52]
9
+ - @gelatonetwork/smartwallet-react-types@0.0.2-alpha.0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Gelato Provider Context (Privy)
2
+
3
+ A wrapper React component for Privy WaaS provider
@@ -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"}
@@ -0,0 +1,3 @@
1
+ export { GelatoSmartWalletPrivyContextProvider, useGelatoSmartWalletPrivyContext } from "./provider.js";
2
+ export { GelatoSmartWalletPrivyConnectButton } from "./components/connect.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export { GelatoSmartWalletPrivyContextProvider, useGelatoSmartWalletPrivyContext } from "./provider.js";
2
+ export { GelatoSmartWalletPrivyConnectButton } from "./components/connect.js";
3
+ //# sourceMappingURL=index.js.map
@@ -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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"}