From 98f3e5e5bd1f416c81a7f34bfc055e499d39ea7c Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Thu, 2 Jul 2026 22:18:31 +0330 Subject: [PATCH] del request --- src/pages/requests/RequestList.tsx | 23 ++++++++++++++++++-- src/pages/requests/hooks/useRequestData.ts | 13 ++++++++++- src/pages/requests/service/RequestService.ts | 5 +++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/pages/requests/RequestList.tsx b/src/pages/requests/RequestList.tsx index 21890bb..54a52f8 100644 --- a/src/pages/requests/RequestList.tsx +++ b/src/pages/requests/RequestList.tsx @@ -1,15 +1,30 @@ import Filters from '@/components/Filters' import Table from '@/components/Table' +import TrashWithConfrim from '@/components/TrashWithConfrim' +import { extractErrorMessage } from '@/config/func' import { type FC } from 'react' -import { useGetRequests } from './hooks/useRequestData' +import { useDeleteRequest, useGetRequests } from './hooks/useRequestData' import moment from 'moment-jalaali' import { Link } from 'react-router-dom' import { Paths } from '@/config/Paths' import { Eye } from 'iconsax-react' +import { toast } from 'react-toastify' const RequestList: FC = () => { const { data } = useGetRequests() + const { mutate: deleteRequest, isPending: isDeleting } = useDeleteRequest() + + const handleDelete = (id: string) => { + deleteRequest(id, { + onSuccess: () => { + toast.success('درخواست با موفقیت حذف شد') + }, + onError: (error) => { + toast.error(extractErrorMessage(error)) + }, + }) + } return (
@@ -107,7 +122,11 @@ const RequestList: FC = () => { - {/* */} + handleDelete(item.id)} + isloading={isDeleting} + colorIcon='red' + />
) } diff --git a/src/pages/requests/hooks/useRequestData.ts b/src/pages/requests/hooks/useRequestData.ts index 9292238..e589f5e 100644 --- a/src/pages/requests/hooks/useRequestData.ts +++ b/src/pages/requests/hooks/useRequestData.ts @@ -1,5 +1,5 @@ import * as api from "../service/RequestService"; -import { useQuery } from "@tanstack/react-query"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; export const useGetRequests = () => { return useQuery({ @@ -15,3 +15,14 @@ export const useGetRequestDetail = (id: string) => { enabled: !!id, }); }; + +export const useDeleteRequest = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: api.deleteRequest, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["requests"] }); + }, + }); +}; diff --git a/src/pages/requests/service/RequestService.ts b/src/pages/requests/service/RequestService.ts index e36ef79..1381fc1 100644 --- a/src/pages/requests/service/RequestService.ts +++ b/src/pages/requests/service/RequestService.ts @@ -14,3 +14,8 @@ export const getRequestDetail = async (id: string) => { await axios.get(`/admin/request/${id}`); return data; }; + +export const deleteRequest = async (id: string) => { + const { data } = await axios.delete(`/admin/request/${id}`); + return data; +};