import { useStore } from '@nanostores/preact'; import { useEffect, useMemo, useState } from 'preact/hooks'; import { $isRealtimeConnected, $notifications, $unreadNotifications, connectNotifications, fetchNotifications, markAllNotificationsAsRead, markNotificationAsRead, } from '../stores/notificationStore'; import { $accessToken, $user } from '../stores/authStore'; import NotificationDetailModal from './notifications/NotificationDetailModal'; function formatTimestamp(value) { if (!value) return ''; const date = new Date(value); if (Number.isNaN(date.getTime())) return ''; return new Intl.DateTimeFormat('hr-HR', { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit', }).format(date); } export default function NotificationBell() { const [mounted, setMounted] = useState(false); const [open, setOpen] = useState(false); const [selectedNotification, setSelectedNotification] = useState(null); const notifications = useStore($notifications); const unread = useStore($unreadNotifications); const isConnected = useStore($isRealtimeConnected); const token = useStore($accessToken); const user = useStore($user); useEffect(() => { setMounted(true); }, []); const latestNotifications = useMemo( () => notifications.slice(0, 6), [notifications] ); useEffect(() => { if (!token || !user?.id) return; fetchNotifications(); connectNotifications(); }, [token, user?.id]); // Stabilan placeholder za SSR + prvi client render. if (!mounted || !token) { return