w-lab-app/src/providers/chat-provider.tsx
gofnnp f821fea322 AW-496-chat-improvement
virtualization & optimization
2025-07-29 19:26:03 +04:00

40 lines
910 B
TypeScript

"use client";
import { createContext, ReactNode, useContext } from "react";
import type { IChatMessage } from "@/entities/chats/types";
import { useChatSocket } from "@/hooks/chats/useChatSocket";
type ChatContextValue = ReturnType<typeof useChatSocket>;
const ChatContext = createContext<ChatContextValue | null>(null);
export function useChat() {
const ctx = useContext(ChatContext);
if (!ctx) {
throw new Error("useChat must be used within <ChatProvider>");
}
return ctx;
}
interface ChatProviderProps {
chatId: string;
initialMessages?: IChatMessage[];
initialTotal?: number;
children: ReactNode;
}
export function ChatProvider({
chatId,
initialMessages,
initialTotal,
children,
}: ChatProviderProps) {
const value = useChatSocket(chatId, {
initialMessages,
initialTotal,
});
return <ChatContext.Provider value={value}>{children}</ChatContext.Provider>;
}