import React from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import dayjs from 'dayjs'; import 'dayjs/locale/zh-cn'; import { BellIcon } from '@heroicons/react/24/outline'; import { MessageStatus } from '../share/types.ts'; // 添加通知页面组件 import { MessageAPI } from './api.ts'; export const NotificationsPage = () => { const queryClient = useQueryClient(); // 获取消息列表 const { data: messages, isLoading } = useQuery({ queryKey: ['messages'], queryFn: () => MessageAPI.getMessages(), }); // 获取未读消息数量 const { data: unreadCount } = useQuery({ queryKey: ['unreadCount'], queryFn: () => MessageAPI.getUnreadCount(), }); // 标记消息为已读 const markAsReadMutation = useMutation({ mutationFn: (id: number) => MessageAPI.markAsRead(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['messages'] }); queryClient.invalidateQueries({ queryKey: ['unreadCount'] }); }, }); // 删除消息 const deleteMutation = useMutation({ mutationFn: (id: number) => MessageAPI.deleteMessage(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['messages'] }); }, }); const handleMarkAsRead = (id: number) => { markAsReadMutation.mutate(id); }; const handleDelete = (id: number) => { if (confirm('确定要删除这条消息吗?')) { deleteMutation.mutate(id); } }; if (isLoading) { return (

通知

); } return (

通知

{unreadCount && unreadCount.count > 0 ? (
{unreadCount.count}条未读
) : null}
{messages?.data.map((message) => (

{message.title}

{message.user_status === MessageStatus.UNREAD && ( )}

{message.content}

{dayjs(message.created_at).format('YYYY-MM-DD HH:mm')}

))}
); };