diff --git a/src/components/layout/NotificationDropdown.tsx b/src/components/layout/NotificationDropdown.tsx index 6e43225..461487c 100644 --- a/src/components/layout/NotificationDropdown.tsx +++ b/src/components/layout/NotificationDropdown.tsx @@ -1,6 +1,7 @@ "use client"; import React, { useEffect, useRef } from 'react'; +import { useRouter } from 'next/navigation'; import { Bell, Check, AlertCircle, Info, AlertTriangle, XCircle } from 'lucide-react'; import { useNotificationStore } from '@/stores'; @@ -47,6 +48,7 @@ interface NotificationDropdownProps { } const NotificationDropdown = ({ isOpen, onClose }: NotificationDropdownProps) => { + const router = useRouter(); const dropdownRef = useRef(null); const notifications = useNotificationStore((s) => s.notifications); const markAsRead = useNotificationStore((s) => s.markAsRead); @@ -69,8 +71,12 @@ const NotificationDropdown = ({ isOpen, onClose }: NotificationDropdownProps) => }; }, [isOpen, onClose, fetchNotifications]); - const handleNotificationClick = async (id: number) => { - await markAsRead(id); + const handleNotificationClick = async (notification: { notificationId: number; linkUrl?: string }) => { + await markAsRead(notification.notificationId); + onClose(); + if (notification.linkUrl) { + router.push(notification.linkUrl); + } }; const handleMarkAllRead = async () => { @@ -115,7 +121,7 @@ const NotificationDropdown = ({ isOpen, onClose }: NotificationDropdownProps) => {notifications.map((notification) => (
  • handleNotificationClick(notification.notificationId)} + onClick={() => handleNotificationClick(notification)} className={`px-4 py-3 cursor-pointer transition-colors hover:bg-gray-50 ${ !notification.isRead ? 'bg-blue-50/50 hover:bg-blue-50' : '' }`}