@macalinao/grill
Version:
Modern Solana development kit for React applications with automatic account batching, caching, and transaction notifications
34 lines • 1.6 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useSolanaClient } from "@gillsdk/react";
import { useQueryClient } from "@tanstack/react-query";
import { useMemo } from "react";
import { createSubscriptionManager, SubscriptionContext, } from "../contexts/subscription-context.js";
/**
* Provider component for WebSocket account subscriptions.
*
* This provider:
* - Creates a SubscriptionManager for handling WebSocket subscriptions to Solana accounts
* - Automatically de-duplicates subscriptions (multiple components subscribing to the same account share one WebSocket)
* - Updates React Query cache when account data changes on-chain
* - Cleans up subscriptions when all subscribers unmount
*
* This provider is automatically included in GrillHeadlessProvider and GrillProvider,
* so you typically don't need to use it directly.
*
* @example
* ```tsx
* // Usually you don't need to use this directly - it's included in GrillProvider
* // But if you need standalone subscription support:
* <SubscriptionProvider>
* <App />
* </SubscriptionProvider>
* ```
*/
export const SubscriptionProvider = ({ children, }) => {
const { rpcSubscriptions } = useSolanaClient();
const queryClient = useQueryClient();
// Create subscription manager for real-time account updates
const subscriptionManager = useMemo(() => createSubscriptionManager(rpcSubscriptions, queryClient), [rpcSubscriptions, queryClient]);
return (_jsx(SubscriptionContext.Provider, { value: subscriptionManager, children: children }));
};
//# sourceMappingURL=subscription-provider.js.map