mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-28 20:40:55 +00:00
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
|
|
import { api } from "@/services/api";
|
|
import type { BookingListFilter } from "@/services/bookings.service";
|
|
|
|
export const useBookingList = (filter?: BookingListFilter) => {
|
|
const input = { filter };
|
|
return {
|
|
queryKey: api.bookings.list.queryKey(input),
|
|
queryFn: () => api.bookings.list.call(input),
|
|
};
|
|
};
|
|
|
|
export const useBooking = (id: string) => ({
|
|
queryKey: api.bookings.getById.queryKey({ id }),
|
|
queryFn: () => api.bookings.getById.call({ id }),
|
|
enabled: Boolean(id),
|
|
});
|
|
|
|
export const useUpdateBookingStatus = () => {
|
|
const qc = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: ({
|
|
id,
|
|
action,
|
|
reason,
|
|
}: {
|
|
id: string;
|
|
action: string;
|
|
reason?: string;
|
|
}) => api.bookings.updateStatus.call({ id, action, reason }),
|
|
onSuccess: (_data, { id }) => {
|
|
qc.invalidateQueries({ queryKey: api.bookings.list.queryKey() });
|
|
qc.invalidateQueries({
|
|
queryKey: api.bookings.getById.queryKey({ id }),
|
|
});
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useDeleteBooking = () => {
|
|
const qc = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: (id: string) => api.bookings.remove.call({ id }),
|
|
onSuccess: () =>
|
|
qc.invalidateQueries({ queryKey: api.bookings.list.queryKey() }),
|
|
});
|
|
};
|