/** * Chat Context - Persists chat messages across tab navigation * * Without this context, messages are lost when switching tabs * because ChatScreen component unmounts and remounts. */ import React, { createContext, useContext, useState, useCallback, ReactNode } from 'react'; import type { Message } from '@/types'; interface ChatContextValue { messages: Message[]; setMessages: React.Dispatch>; addMessage: (message: Message) => void; clearMessages: (initialMessage: Message) => void; } const ChatContext = createContext(undefined); export function ChatProvider({ children }: { children: ReactNode }) { const [messages, setMessages] = useState([ { id: '1', role: 'assistant', content: "Hello! I'm Julia, your AI wellness companion.\n\nType a message below to chat with me.", timestamp: new Date(), }, ]); const addMessage = useCallback((message: Message) => { setMessages(prev => [...prev, message]); }, []); const clearMessages = useCallback((initialMessage: Message) => { setMessages([initialMessage]); }, []); return ( {children} ); } export function useChat() { const context = useContext(ChatContext); if (!context) { throw new Error('useChat must be used within ChatProvider'); } return context; }