diff --git a/src/app/[name]/(Dialogs)/notifications/hooks/useNotificationData.ts b/src/app/[name]/(Dialogs)/notifications/hooks/useNotificationData.ts index 49dd7fb..48c7cea 100644 --- a/src/app/[name]/(Dialogs)/notifications/hooks/useNotificationData.ts +++ b/src/app/[name]/(Dialogs)/notifications/hooks/useNotificationData.ts @@ -1,5 +1,5 @@ import * as api from "../service/NotificationService"; -import { useQuery } from "@tanstack/react-query"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; export const useGetNotifications = () => { return useQuery({ @@ -7,3 +7,13 @@ export const useGetNotifications = () => { queryFn: api.getNotifications, }); }; + +export const useDeleteNotification = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: api.deleteNotification, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["notifications"] }); + }, + }); +}; diff --git a/src/app/[name]/(Dialogs)/notifications/page.tsx b/src/app/[name]/(Dialogs)/notifications/page.tsx index 73b2959..98598ce 100644 --- a/src/app/[name]/(Dialogs)/notifications/page.tsx +++ b/src/app/[name]/(Dialogs)/notifications/page.tsx @@ -5,16 +5,82 @@ import { ArrowLeft, Trash } from 'iconsax-react'; import { useRouter } from 'next/navigation'; import React from 'react' import { useTranslation } from 'react-i18next'; -import { useGetNotifications } from './hooks/useNotificationData'; +import { useGetNotifications, useDeleteNotification } from './hooks/useNotificationData'; +import type { Notification } from './types/Types'; type Props = object +const formatDate = (dateString: string): string => { + const date = new Date(dateString); + return date.toLocaleDateString('fa-IR', { + year: 'numeric', + month: 'long', + day: 'numeric' + }); +}; + +const formatTime = (dateString: string): string => { + const date = new Date(dateString); + return date.toLocaleTimeString('fa-IR', { + hour: '2-digit', + minute: '2-digit' + }); +}; + export default function NotificationsIndex({ }: Props) { - - const { t } = useTranslation('notifications') const router = useRouter(); - const { data } = useGetNotifications(); + const { data, isLoading, isError } = useGetNotifications(); + const { mutate: deleteNotification } = useDeleteNotification(); + + const notifications = React.useMemo(() => { + return data?.data ?? []; + }, [data?.data]); + + const handleDelete = (id: string) => { + deleteNotification(id); + }; + + if (isLoading) { + return ( +
در حال دریافت اعلانها...
+اعلانی وجود ندارد
+لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است
+ {notifications.map((notification: Notification) => { + const isNew = !notification.sentAt; + const formattedDate = formatDate(notification.createdAt); + const formattedTime = formatTime(notification.createdAt); -{notification.content}
+