Skip to content

Commit 6f29e52

Browse files
authored
Add the providersfor splits (#154)
* Add the providersfor splits * Add check for chain ID
1 parent 84441cc commit 6f29e52

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

src/app/providers/providers.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
import { base, sepolia } from "viem/chains";
1212
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1313
import { SplitsProvider } from "@0xsplits/splits-sdk-react";
14+
import { PaymentSplitsProvider } from "./splitsProvider";
1415

1516
const queryClient = new QueryClient();
1617
const config = getDefaultConfig({
@@ -33,9 +34,15 @@ export default function Providers({ children }: { children: React.ReactNode }) {
3334
fontStack: "system",
3435
})}
3536
>
36-
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
37-
<SplitsProvider>{children}</SplitsProvider>
38-
</ThemeProvider>
37+
<PaymentSplitsProvider>
38+
<ThemeProvider
39+
attribute="class"
40+
defaultTheme="system"
41+
enableSystem
42+
>
43+
{children}
44+
</ThemeProvider>
45+
</PaymentSplitsProvider>
3946
</RainbowKitProvider>
4047
</QueryClientProvider>
4148
</WagmiProvider>

src/app/providers/splitsProvider.tsx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use client";
2+
3+
import { SplitsClientConfig, SplitsProvider } from "@0xsplits/splits-sdk-react";
4+
import { useEffect, useState } from "react";
5+
import { useChainId, usePublicClient, useWalletClient } from "wagmi";
6+
7+
type Props = {
8+
children?: React.ReactNode;
9+
};
10+
11+
export const PaymentSplitsProvider = ({ children }: Props) => {
12+
const [splitsConfig, setSplitsConfig] = useState<SplitsClientConfig | null>(
13+
null,
14+
);
15+
const { data: walletClient, status, error } = useWalletClient();
16+
const publicClient = usePublicClient();
17+
const chainId = useChainId();
18+
19+
useEffect(() => {
20+
if (status == "success" && chainId) {
21+
setSplitsConfig({
22+
chainId: chainId,
23+
walletClient: walletClient,
24+
publicClient: publicClient,
25+
apiConfig: { apiKey: process.env.NEXT_PUBLIC_SPLITS_API_KEY ?? "" },
26+
});
27+
} else if (error) {
28+
console.log("Error Connecting Wallet Client:" + error);
29+
}
30+
}, [status, chainId]);
31+
32+
return (
33+
<>
34+
{splitsConfig ? (
35+
<SplitsProvider config={splitsConfig}>{children}</SplitsProvider>
36+
) : (
37+
<>{children}</>
38+
)}
39+
</>
40+
);
41+
};

0 commit comments

Comments
 (0)