import { useState, useEffect, useCallback } from 'react'; import { notifications as notificationService } from '../services/notification.service'; import { Notification } from '../types'; export function useNotifications() { const [notifications, setNotifications] = useState([]); const [unreadCount, setUnreadCount] = useState(0); // Load initial notifications useEffect(() => { const loadNotifications = () => { setNotifications(notificationService.getAll()); setUnreadCount(notificationService.getUnreadCount()); }; loadNotifications(); // Subscribe to notification events const unsubscribers = [ notificationService.subscribe('bell', loadNotifications), notificationService.subscribe('update', loadNotifications), notificationService.subscribe('dismiss', loadNotifications), notificationService.subscribe('read', loadNotifications), notificationService.subscribe('clear', loadNotifications), ]; return () => { unsubscribers.forEach(unsub => unsub()); }; }, []); const markAsRead = useCallback((id: string) => { notificationService.markAsRead(id); }, []); const markAllAsRead = useCallback(() => { notifications .filter(n => !n.readAt) .forEach(n => notificationService.markAsRead(n.id)); }, [notifications]); const deleteNotification = useCallback((id: string) => { notificationService.dismiss(id); }, []); const clearAll = useCallback(() => { notificationService.clear(); }, []); return { notifications, unreadCount, markAsRead, markAllAsRead, deleteNotification, clearAll, }; }