From 88746cf96ce2d37ac04da24e7d65a10d43b008a9 Mon Sep 17 00:00:00 2001 From: Tom Ratcliffe Date: Wed, 7 Jan 2026 16:04:38 +0000 Subject: [PATCH] Refactor to avoid rule of hooks violations (cherry picked from commit e2d459afddcb07b957d74a5eabcc66bbfe8123bb) --- public/app/features/teams/hooks.ts | 34 +++++++++++++++++------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/public/app/features/teams/hooks.ts b/public/app/features/teams/hooks.ts index 264728b342d..63c793b10d8 100644 --- a/public/app/features/teams/hooks.ts +++ b/public/app/features/teams/hooks.ts @@ -1,4 +1,3 @@ -/* eslint-disable react-hooks/rules-of-hooks */ import { skipToken } from '@reduxjs/toolkit/query'; import { useEffect, useMemo } from 'react'; @@ -167,11 +166,11 @@ export const useCreateTeam = () => { }; export const useGetExternalGroupMappings = (args: { teamId: string }) => { - if (!config.featureToggles.kubernetesExternalGroupMapping) { - return useGetTeamGroupsApiQuery(args); - } + const shouldUseAppPlatform = Boolean(config.featureToggles.kubernetesExternalGroupMapping); - const { data: newApiData, ...newApiRest } = useListExternalGroupMappingQuery({}); + const legacyResult = useGetTeamGroupsApiQuery(args, { skip: shouldUseAppPlatform }); + + const { data: newApiData, ...newApiRest } = useListExternalGroupMappingQuery({}, { skip: !shouldUseAppPlatform }); const groups: TeamGroupDto[] = useMemo(() => { // FIXME: Consider using the search API which has sorting support @@ -183,16 +182,17 @@ export const useGetExternalGroupMappings = (args: { teamId: string }) => { })); }, [newApiData, args.teamId]); - return { - ...newApiRest, - data: groups, - }; + if (shouldUseAppPlatform) { + return { + ...newApiRest, + data: groups, + }; + } + return legacyResult; }; export const useAddExternalGroupMapping = () => { - if (!config.featureToggles.kubernetesExternalGroupMapping) { - return useAddTeamGroupApiMutation(); - } + const legacyMutation = useAddTeamGroupApiMutation(); const [addNew, newResult] = useCreateExternalGroupMappingMutation(); @@ -212,13 +212,14 @@ export const useAddExternalGroupMapping = () => { }); }; + if (!config.featureToggles.kubernetesExternalGroupMapping) { + return legacyMutation; + } return [add, newResult] as const; }; export const useRemoveExternalGroupMapping = () => { - if (!config.featureToggles.kubernetesExternalGroupMapping) { - return useRemoveTeamGroupApiQueryMutation(); - } + const legacyMutation = useRemoveTeamGroupApiQueryMutation(); const [deleteMapping, deleteResult] = useDeleteExternalGroupMappingMutation(); @@ -226,5 +227,8 @@ export const useRemoveExternalGroupMapping = () => { return deleteMapping({ name: args.uid }); }; + if (!config.featureToggles.kubernetesExternalGroupMapping) { + return legacyMutation; + } return [remove, deleteResult] as const; };