OpChan/packages/react/src/v1/provider/OpChanProvider.tsx

45 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-10-23 12:16:25 +05:30
import React from "react";
import { OpChanClient, type OpChanClientConfig } from "@opchan/core";
import { ClientProvider } from "../context/ClientContext";
import { StoreWiring } from "./StoreWiring";
import { WagmiProvider } from "wagmi";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { wagmiConfig } from "@opchan/core";
2025-10-23 12:16:25 +05:30
export interface OpChanProviderProps {
config: OpChanClientConfig;
children: React.ReactNode;
}
// Create a default QueryClient instance
const defaultQueryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
retry: 1,
},
},
});
/**
2025-10-23 12:16:25 +05:30
* OpChan provider that constructs the OpChanClient and provides wallet context.
* Simplified to use WagmiProvider + QueryClient only (no AppKit).
*/
2025-10-23 12:16:25 +05:30
export const OpChanProvider: React.FC<OpChanProviderProps> = ({
config,
children,
}) => {
const [client] = React.useState(() => new OpChanClient(config));
return (
2025-10-23 12:16:25 +05:30
<WagmiProvider config={wagmiConfig}>
<QueryClientProvider client={defaultQueryClient}>
<ClientProvider client={client}>
<StoreWiring />
{children}
</ClientProvider>
</QueryClientProvider>
2025-10-23 12:16:25 +05:30
</WagmiProvider>
);
};