ticket list + create ticket

This commit is contained in:
hamid zarghami
2026-02-24 15:08:33 +03:30
parent 3b7fb4a63a
commit 5b938d1525
6 changed files with 262 additions and 378 deletions
+26 -3
View File
@@ -1,14 +1,37 @@
import * as api from "../service/TicketService";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { type AddMessageTicketType, type CreateTicketType } from "../types/TicketTypes";
import { type AddMessageTicketType, type CreateTicketPayload, type CreateTicketType } from "../types/TicketTypes";
export const useGetTickets = (status: string) => {
export const useGetTickets = (status?: string) => {
return useQuery({
queryKey: ["tickets", status],
queryKey: ["public-tickets", status ?? ""],
queryFn: () => api.getTickets(status),
});
};
/** جزئیات یک تیکت از GET /public/tickets/{id} */
export const useGetTicketById = (id: string) => {
return useQuery({
queryKey: ["public-ticket", id],
queryFn: () => api.getTicketById(id),
enabled: !!id,
});
};
/** ایجاد تیکت جدید (بدون parentId) یا ارسال پیام (با parentId) */
export const useCreateOrReplyTicket = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (variables: CreateTicketPayload) => api.createOrReplyTicket(variables),
onSuccess: (_, variables) => {
queryClient.invalidateQueries({ queryKey: ["public-tickets"] });
if (variables.parentId) {
queryClient.invalidateQueries({ queryKey: ["public-ticket", variables.parentId] });
}
},
});
};
export const useCreateTicket = () => {
return useMutation({
mutationFn: (variables: CreateTicketType) => api.createTicket(variables),