mirror of
https://github.com/khairul169/vaulterm.git
synced 2025-04-29 00:59:40 +07:00
69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
import { FormSchema } from "../schema/form";
|
|
import api from "@/lib/api";
|
|
import { useMemo } from "react";
|
|
import { useKeychains } from "@/pages/keychains/hooks/query";
|
|
import queryClient from "@/lib/queryClient";
|
|
import { useTeamId } from "@/stores/auth";
|
|
import { MoveHostPayload } from "../schema/query";
|
|
|
|
export const useHosts = (params: any = {}) => {
|
|
const teamId = useTeamId();
|
|
return useQuery({
|
|
queryKey: ["hosts", teamId, params],
|
|
queryFn: () => api("/hosts", { params: { teamId, ...params } }),
|
|
select: (i) => i.rows,
|
|
});
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
export const useSaveHost = () => {
|
|
const teamId = useTeamId();
|
|
|
|
return useMutation({
|
|
mutationFn: async (payload: FormSchema) => {
|
|
const body = { teamId, ...payload };
|
|
return body.id
|
|
? api(`/hosts/${body.id}`, { method: "PUT", body })
|
|
: api(`/hosts`, { method: "POST", body });
|
|
},
|
|
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 },
|
|
});
|
|
},
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: ["hosts"] });
|
|
},
|
|
});
|
|
};
|