import React, { createContext, ReactNode, useContext, useMemo } from 'react';
import { ChatAssistantContextValue } from '../types/chatAssistant';
import { useChatAssistant } from '../hooks/useChatAssistant';

const ChatAssistantContext = createContext<ChatAssistantContextValue | undefined>(undefined);

interface ChatAssistantProviderProps {
  children: ReactNode;
}

export const ChatAssistantProvider: React.FC<ChatAssistantProviderProps> = ({ children }) => {
  const value = useChatAssistant();

  const contextValue = useMemo(() => value, [value]);

  return (
    <ChatAssistantContext.Provider value={contextValue}>
      {children}
    </ChatAssistantContext.Provider>
  );
};

export function useChatAssistantContext(): ChatAssistantContextValue {
  const context = useContext(ChatAssistantContext);

  if (context === undefined) {
    throw new Error('useChatAssistantContext must be used within a ChatAssistantProvider');
  }

  return context;
}
