import React, { createContext, useContext, useEffect, useState } from 'react'; import { io } from 'socket.io-client'; import { useAuth } from './AuthContext'; const SocketContext = createContext(); export const SocketProvider = ({ children }) => { const { user } = useAuth(); const [socket, setSocket] = useState(null); const [notifications, setNotifications] = useState([]); useEffect(() => { if (user) { const newSocket = io('/'); // Dynamic relative host setSocket(newSocket); newSocket.emit('join', user._id); newSocket.on('receiveNotification', (notification) => { setNotifications(prev => [notification, ...prev]); // Optional: Play a sound or show a toast }); return () => newSocket.close(); } else { if (socket) { socket.close(); setSocket(null); } } }, [user]); return ( {children} ); }; export const useSocket = () => useContext(SocketContext);