From 935d400a97ddd1b1f4c8bda34e555c94c30f07a8 Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Wed, 3 Dec 2025 16:21:13 -0300 Subject: [PATCH 1/2] Enhancement(api): Update useGetWorkspaceIntegrations to accept options for enabled state and refetch interval; adjust integration fetching in PolicySelectionModal and RolePermissionsSection based on project type. --- frontend/src/hooks/api/projects/queries.tsx | 9 ++++++--- .../components/PolicySelectionModal.tsx | 6 +++++- .../components/RolePermissionsSection.tsx | 9 ++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/frontend/src/hooks/api/projects/queries.tsx b/frontend/src/hooks/api/projects/queries.tsx index 8c07ca691..b9748950b 100644 --- a/frontend/src/hooks/api/projects/queries.tsx +++ b/frontend/src/hooks/api/projects/queries.tsx @@ -191,12 +191,15 @@ export const fetchWorkspaceIntegrations = async (projectId: string) => { return data.integrations; }; -export const useGetWorkspaceIntegrations = (projectId: string) => +export const useGetWorkspaceIntegrations = ( + projectId: string, + options?: { enabled?: boolean; refetchInterval?: number | false } +) => useQuery({ queryKey: projectKeys.getProjectIntegrations(projectId), queryFn: () => fetchWorkspaceIntegrations(projectId), - enabled: Boolean(projectId), - refetchInterval: 4000 + enabled: Boolean(projectId) && (options?.enabled ?? true), + refetchInterval: options?.refetchInterval ?? 4000 }); export const createWorkspace = ( diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx index 3505722bc..d8aca9f38 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx @@ -48,7 +48,11 @@ const Content = ({ onClose, type: projectType }: ContentProps) => { const rootForm = useFormContext(); const [search, setSearch] = useState(""); const { currentProject } = useProject(); - const { data: integrations = [] } = useGetWorkspaceIntegrations(currentProject?.id ?? ""); + const isSecretManagerProject = currentProject.type === ProjectType.SecretManager; + const { data: integrations = [] } = useGetWorkspaceIntegrations(currentProject?.id ?? "", { + enabled: isSecretManagerProject, + refetchInterval: false + }); const { control, diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx index f50b39a92..86ff1e3aa 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx @@ -105,11 +105,16 @@ export const renderConditionalComponents = ( export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => { const { currentProject } = useProject(); const projectId = currentProject?.id || ""; + const isSecretManagerProject = currentProject.type === ProjectType.SecretManager; + const { data: role, isPending } = useGetProjectRoleBySlug( currentProject?.id ?? "", roleSlug as string ); - const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId); + const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId, { + enabled: isSecretManagerProject, + refetchInterval: false + }); const hasNativeIntegrations = integrations.length > 0; const [showAccessTree, setShowAccessTree] = useState(null); @@ -142,8 +147,6 @@ export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => { (role?.slug ?? "") as ProjectMembershipRole ); - const isSecretManagerProject = currentProject.type === ProjectType.SecretManager; - const permissions = form.watch("permissions"); const formattedPermissions = useMemo( From 8f3e5a8362af37636116544153fffe1855b26b51 Mon Sep 17 00:00:00 2001 From: Victor Santos Date: Wed, 3 Dec 2025 16:25:27 -0300 Subject: [PATCH 2/2] refactor: Consolidate project ID retrieval in PolicySelectionModal and RolePermissionsSection for improved clarity and consistency --- .../components/PolicySelectionModal.tsx | 4 ++-- .../components/RolePermissionsSection.tsx | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx index d8aca9f38..46ea296ea 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx @@ -47,9 +47,9 @@ type TForm = { permissions: Record }; const Content = ({ onClose, type: projectType }: ContentProps) => { const rootForm = useFormContext(); const [search, setSearch] = useState(""); - const { currentProject } = useProject(); + const { currentProject, projectId } = useProject(); const isSecretManagerProject = currentProject.type === ProjectType.SecretManager; - const { data: integrations = [] } = useGetWorkspaceIntegrations(currentProject?.id ?? "", { + const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId, { enabled: isSecretManagerProject, refetchInterval: false }); diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx index 86ff1e3aa..e853715e0 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx @@ -103,14 +103,11 @@ export const renderConditionalComponents = ( }; export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => { - const { currentProject } = useProject(); - const projectId = currentProject?.id || ""; + const { currentProject, projectId } = useProject(); + const isSecretManagerProject = currentProject.type === ProjectType.SecretManager; - const { data: role, isPending } = useGetProjectRoleBySlug( - currentProject?.id ?? "", - roleSlug as string - ); + const { data: role, isPending } = useGetProjectRoleBySlug(projectId, roleSlug as string); const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId, { enabled: isSecretManagerProject, refetchInterval: false