69 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-11-09 10:33:07 +00:00
import { useMutation, useQuery } from "@tanstack/react-query";
import { FormSchema } from "../schema/form";
2024-11-12 17:17:10 +00:00
import api from "@/lib/api";
2024-11-09 14:37:09 +00:00
import { useMemo } from "react";
2024-11-09 18:57:36 +00:00
import { useKeychains } from "@/pages/keychains/hooks/query";
2024-11-12 17:17:10 +00:00
import queryClient from "@/lib/queryClient";
import { useTeamId } from "@/stores/auth";
2024-11-16 23:50:02 +07:00
import { MoveHostPayload } from "../schema/query";
2024-11-12 17:17:10 +00:00
2024-11-16 23:50:02 +07:00
export const useHosts = (params: any = {}) => {
2024-11-12 17:17:10 +00:00
const teamId = useTeamId();
return useQuery({
2024-11-16 23:50:02 +07:00
queryKey: ["hosts", teamId, params],
queryFn: () => api("/hosts", { params: { teamId, ...params } }),
2024-11-12 17:17:10 +00:00
select: (i) => i.rows,
});
};
2024-11-09 10:33:07 +00:00
2024-11-09 14:37:09 +00:00
export const useKeychainsOptions = () => {
const keys = useKeychains();
const data = useMemo(() => {
const items: any[] = keys.data || [];
return items.map((key: any) => ({
type: key.type,
label: key.label,
value: key.id,
}));
}, [keys.data]);
return data;
};
2024-11-09 10:33:07 +00:00
export const useSaveHost = () => {
2024-11-12 17:17:10 +00:00
const teamId = useTeamId();
2024-11-09 10:33:07 +00:00
return useMutation({
2024-11-12 17:17:10 +00:00
mutationFn: async (payload: FormSchema) => {
const body = { teamId, ...payload };
2024-11-09 10:33:07 +00:00
return body.id
? api(`/hosts/${body.id}`, { method: "PUT", body })
: api(`/hosts`, { method: "POST", body });
},
2024-11-16 23:50:02 +07:00
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["hosts"] });
},
});
};
export const useMoveHost = () => {
const teamId = useTeamId();
return useMutation({
mutationFn: (data: MoveHostPayload) => {
const hostId = Array.isArray(data.hostId)
? data.hostId.join(",")
: data.hostId;
return api("/hosts/move", {
method: "POST",
body: { teamId, parentId: data.parentId, hostId },
});
},
2024-11-09 10:33:07 +00:00
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["hosts"] });
},
});
};