"use client"; import { Bell, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Badge } from "@/components/ui/badge"; import { useNotifications, useMarkNotificationRead } from "@/hooks/use-notification"; import { formatDistanceToNow } from "date-fns"; import { useRouter } from "next/navigation"; export function NotificationsDropdown() { const router = useRouter(); const { data, isLoading } = useNotifications(); const markAsRead = useMarkNotificationRead(); const notifications = data?.items || []; const unreadCount = data?.unreadCount || 0; const handleNotificationClick = (notification: any) => { if (!notification.isRead) { markAsRead.mutate(notification.notificationId); } if (notification.link) { router.push(notification.link); } }; return ( Notifications {isLoading ? (
) : notifications.length === 0 ? (
No new notifications
) : (
{notifications.slice(0, 5).map((notification: any) => ( handleNotificationClick(notification)} >
{notification.title} {!notification.isRead && }
{notification.message}
{formatDistanceToNow(new Date(notification.createdAt), { addSuffix: true, })}
))}
)} View All Notifications (Coming Soon)
); }