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 (
{message.content}
{dayjs(message.created_at).format('YYYY-MM-DD HH:mm')}