mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 20:25:43 +00:00
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import { useQuery } from "@tanstack/react-query";
|
|
|
|
import { apiRequest } from "@app/config/request";
|
|
import { TReactQueryOptions } from "@app/types/reactQuery";
|
|
|
|
import {
|
|
TGetSecretApprovalPoliciesDTO,
|
|
TGetSecretApprovalPolicyOfBoardDTO,
|
|
TSecretApprovalPolicy
|
|
} from "./types";
|
|
|
|
export const secretApprovalKeys = {
|
|
getApprovalPolicies: (workspaceId: string) =>
|
|
[{ workspaceId }, "secret-approval-policies"] as const,
|
|
getApprovalPolicyOfABoard: (workspaceId: string, environment: string, secretPath: string) => [
|
|
{ workspaceId, environment, secretPath },
|
|
"Secret-approval-policy"
|
|
]
|
|
};
|
|
|
|
const fetchApprovalPolicies = async (workspaceId: string) => {
|
|
const { data } = await apiRequest.get<{ approvals: TSecretApprovalPolicy[] }>(
|
|
"/api/v1/secret-approvals",
|
|
{ params: { workspaceId } }
|
|
);
|
|
return data.approvals;
|
|
};
|
|
|
|
export const useGetSecretApprovalPolicies = ({
|
|
workspaceId,
|
|
options = {}
|
|
}: TGetSecretApprovalPoliciesDTO & TReactQueryOptions) =>
|
|
useQuery({
|
|
queryKey: secretApprovalKeys.getApprovalPolicies(workspaceId),
|
|
queryFn: () => fetchApprovalPolicies(workspaceId),
|
|
...options,
|
|
enabled: Boolean(workspaceId) && (options?.enabled ?? true)
|
|
});
|
|
|
|
const fetchApprovalPolicyOfABoard = async (
|
|
workspaceId: string,
|
|
environment: string,
|
|
secretPath: string
|
|
) => {
|
|
const { data } = await apiRequest.get<{ policy: TSecretApprovalPolicy }>(
|
|
"/api/v1/secret-approvals/board",
|
|
{ params: { workspaceId, environment, secretPath } }
|
|
);
|
|
return data.policy || "";
|
|
};
|
|
|
|
export const useGetSecretApprovalPolicyOfABoard = ({
|
|
workspaceId,
|
|
secretPath = "/",
|
|
environment,
|
|
options = {}
|
|
}: TGetSecretApprovalPolicyOfBoardDTO & TReactQueryOptions) =>
|
|
useQuery({
|
|
queryKey: secretApprovalKeys.getApprovalPolicyOfABoard(workspaceId, environment, secretPath),
|
|
queryFn: () => fetchApprovalPolicyOfABoard(workspaceId, environment, secretPath),
|
|
...options,
|
|
enabled: Boolean(workspaceId && secretPath && environment) && (options?.enabled ?? true)
|
|
});
|