Files
tm_panel/src/hooks/queries/useInquiryQueries.ts
T
AmirReza Jamali 6da653cb15 feat(inquiries): Add status change functionality to inquiries
- Add useChangeInquiryStatus hook for managing inquiry status mutations
- Add STATUS endpoint to inquiries API endpoints configuration
- Add changeInquiryStatus method to inquiries service with error handling
- Add TChangeInquiryStatusCredentials type with validation schema
- Include description, reason, and status fields in status change credentials
- Invalidate inquiries query cache on successful status update
- Display success toast notification after status change completes
2025-11-25 14:11:00 +03:30

52 lines
1.5 KiB
TypeScript

import { API_ENDPOINTS, inquiriesService } from "@/lib/api";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useMemo } from "react";
import { toast } from "react-toastify";
export const useGetInquiries = (params?: Record<string, any>) => {
const queryKey = useMemo(
() => [API_ENDPOINTS.INQUIRIES.BASE(), params],
[params],
);
return useQuery({
queryKey,
queryFn: () => inquiriesService.getInquiries(params),
});
};
export const useDeleteInquiry = (successCallback?: () => void) => {
const queryClient = useQueryClient();
const mutationKey = useMemo(
() => [API_ENDPOINTS.INQUIRIES.BASE(), "DELETE INQUIRY"],
[],
);
return useMutation({
mutationKey,
mutationFn: inquiriesService.deleteInquiry,
onSuccess: (response) => {
toast.success(response.message);
successCallback?.();
queryClient.invalidateQueries({
queryKey: [API_ENDPOINTS.INQUIRIES.BASE()],
});
},
});
};
export const useChangeInquiryStatus = (successCallback?: () => void) => {
const queryClient = useQueryClient();
const mutationKey = useMemo(
() => [API_ENDPOINTS.INQUIRIES.BASE(), "UPDATE INQUIRY STATUS"],
[],
);
return useMutation({
mutationKey,
mutationFn: inquiriesService.changeInquiryStatus,
onSuccess: (response) => {
toast.success(response.message);
successCallback?.()
queryClient.invalidateQueries({
queryKey: [API_ENDPOINTS.INQUIRIES.BASE()],
});
},
});
};