Enhancement(api): Update useGetWorkspaceIntegrations to accept options for enabled state and refetch interval; adjust integration fetching in PolicySelectionModal and RolePermissionsSection based on project type.

This commit is contained in:
Victor Santos
2025-12-03 16:21:13 -03:00
parent aa9c125124
commit 935d400a97
3 changed files with 17 additions and 7 deletions

View File

@@ -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 = (

View File

@@ -48,7 +48,11 @@ const Content = ({ onClose, type: projectType }: ContentProps) => {
const rootForm = useFormContext<TFormSchema>();
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,

View File

@@ -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<ProjectPermissionSub | null>(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(