135 lines
3.6 KiB
TypeScript
135 lines
3.6 KiB
TypeScript
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import { useAuthToken } from "../hooks/use-root-data";
|
|
import {
|
|
SellerCourierCreate,
|
|
SellerCourierUpdate,
|
|
} from "../../src/api/types";
|
|
import { createSellerCourierManagementApi, createCourierManagementApi } from "~/utils/api-client-factory";
|
|
|
|
export function useServiceGetCouriers(sellerId: string) {
|
|
const token = useAuthToken();
|
|
const response = useQuery({
|
|
enabled: !!token && !!sellerId,
|
|
retry: 1,
|
|
retryDelay: 3000,
|
|
refetchOnWindowFocus: false,
|
|
queryKey: ["getCouriersService", sellerId],
|
|
queryFn: async () => {
|
|
if (!token) throw new Error("Authentication token is required");
|
|
|
|
try {
|
|
return await createSellerCourierManagementApi(token).apiOrderV1SellerCouriersSellerList({
|
|
seller: sellerId,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error fetching couriers:", error);
|
|
throw error;
|
|
}
|
|
},
|
|
});
|
|
|
|
return { ...response };
|
|
}
|
|
|
|
export function useGetAllCouriers() {
|
|
const token = useAuthToken();
|
|
const response = useQuery({
|
|
enabled: !!token,
|
|
retry: 1,
|
|
retryDelay: 3000,
|
|
refetchOnWindowFocus: false,
|
|
queryKey: ["getAllCouriers"],
|
|
queryFn: async () => {
|
|
if (!token) throw new Error("Authentication token is required");
|
|
|
|
try {
|
|
return await createCourierManagementApi(token).apiOrderV1CouriersList();
|
|
} catch (error) {
|
|
console.error("Error fetching all couriers:", error);
|
|
throw error;
|
|
}
|
|
},
|
|
});
|
|
|
|
return { ...response };
|
|
}
|
|
|
|
export function useCreateSellerCourier() {
|
|
const token = useAuthToken();
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async (data: SellerCourierCreate) => {
|
|
if (!token) throw new Error("Authentication token is required");
|
|
|
|
try {
|
|
return await createSellerCourierManagementApi(token).apiOrderV1SellerCouriersCreate({
|
|
data,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error creating seller courier:", error);
|
|
throw error;
|
|
}
|
|
},
|
|
onSuccess: () => {
|
|
// Invalidate and refetch seller couriers
|
|
queryClient.invalidateQueries({ queryKey: ["getCouriersService"] });
|
|
},
|
|
});
|
|
}
|
|
|
|
export function useDeleteSellerCourier() {
|
|
const token = useAuthToken();
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async (id: string) => {
|
|
if (!token) throw new Error("Authentication token is required");
|
|
|
|
try {
|
|
return await createSellerCourierManagementApi(token).apiOrderV1SellerCouriersDeleteDelete({
|
|
id,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error deleting seller courier:", error);
|
|
throw error;
|
|
}
|
|
},
|
|
onSuccess: () => {
|
|
// Invalidate and refetch seller couriers
|
|
queryClient.invalidateQueries({ queryKey: ["getCouriersService"] });
|
|
},
|
|
});
|
|
}
|
|
|
|
export function useUpdateSellerCourier() {
|
|
const token = useAuthToken();
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async ({
|
|
id,
|
|
data,
|
|
}: {
|
|
id: string;
|
|
data: SellerCourierUpdate;
|
|
}) => {
|
|
if (!token) throw new Error("Authentication token is required");
|
|
|
|
try {
|
|
return await createSellerCourierManagementApi(token).apiOrderV1SellerCouriersPartialUpdate({
|
|
id,
|
|
data,
|
|
});
|
|
} catch (error) {
|
|
console.error("Error updating seller courier:", error);
|
|
throw error;
|
|
}
|
|
},
|
|
onSuccess: () => {
|
|
// Invalidate and refetch seller couriers
|
|
queryClient.invalidateQueries({ queryKey: ["getCouriersService"] });
|
|
},
|
|
});
|
|
}
|