Merge pull request #4983 from Infisical/fix/fetch-native-integrations-only-if-secret-manager

improvement(integrations): adjust integration fetching in PolicySelectionModal and RolePermissionsSection based on project type
This commit is contained in:
Victor Hugo dos Santos
2025-12-03 19:14:00 -03:00
committed by GitHub
3 changed files with 21 additions and 14 deletions
+6 -3
View File
@@ -191,12 +191,15 @@ export const fetchWorkspaceIntegrations = async (projectId: string) => {
return data.integrations; return data.integrations;
}; };
export const useGetWorkspaceIntegrations = (projectId: string) => export const useGetWorkspaceIntegrations = (
projectId: string,
options?: { enabled?: boolean; refetchInterval?: number | false }
) =>
useQuery({ useQuery({
queryKey: projectKeys.getProjectIntegrations(projectId), queryKey: projectKeys.getProjectIntegrations(projectId),
queryFn: () => fetchWorkspaceIntegrations(projectId), queryFn: () => fetchWorkspaceIntegrations(projectId),
enabled: Boolean(projectId), enabled: Boolean(projectId) && (options?.enabled ?? true),
refetchInterval: 4000 refetchInterval: options?.refetchInterval ?? 4000
}); });
export const createWorkspace = ( export const createWorkspace = (
@@ -47,8 +47,12 @@ type TForm = { permissions: Record<ProjectPermissionSub, boolean> };
const Content = ({ onClose, type: projectType }: ContentProps) => { const Content = ({ onClose, type: projectType }: ContentProps) => {
const rootForm = useFormContext<TFormSchema>(); const rootForm = useFormContext<TFormSchema>();
const [search, setSearch] = useState(""); const [search, setSearch] = useState("");
const { currentProject } = useProject(); const { currentProject, projectId } = useProject();
const { data: integrations = [] } = useGetWorkspaceIntegrations(currentProject?.id ?? ""); const isSecretManagerProject = currentProject.type === ProjectType.SecretManager;
const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId, {
enabled: isSecretManagerProject,
refetchInterval: false
});
const { const {
control, control,
@@ -103,13 +103,15 @@ export const renderConditionalComponents = (
}; };
export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => { export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => {
const { currentProject } = useProject(); const { currentProject, projectId } = useProject();
const projectId = currentProject?.id || "";
const { data: role, isPending } = useGetProjectRoleBySlug( const isSecretManagerProject = currentProject.type === ProjectType.SecretManager;
currentProject?.id ?? "",
roleSlug as string const { data: role, isPending } = useGetProjectRoleBySlug(projectId, roleSlug as string);
); const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId, {
const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId); enabled: isSecretManagerProject,
refetchInterval: false
});
const hasNativeIntegrations = integrations.length > 0; const hasNativeIntegrations = integrations.length > 0;
const [showAccessTree, setShowAccessTree] = useState<ProjectPermissionSub | null>(null); const [showAccessTree, setShowAccessTree] = useState<ProjectPermissionSub | null>(null);
@@ -142,8 +144,6 @@ export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => {
(role?.slug ?? "") as ProjectMembershipRole (role?.slug ?? "") as ProjectMembershipRole
); );
const isSecretManagerProject = currentProject.type === ProjectType.SecretManager;
const permissions = form.watch("permissions"); const permissions = form.watch("permissions");
const formattedPermissions = useMemo( const formattedPermissions = useMemo(