fix: useCustomResource hook infinite call (#13835)

* fix: useCustomResource hook infinite call

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

* prettier

Signed-off-by: Matthew Clarke <mclarke@spotify.com>

Signed-off-by: Matthew Clarke <mclarke@spotify.com>
This commit is contained in:
Matthew Clarke
2022-09-26 17:22:34 -04:00
committed by GitHub
parent 5b8bdeebc8
commit 35a6cfe257
3 changed files with 25 additions and 23 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-kubernetes': patch
---
Fix infinite call bug in `useCustomResources` hook
@@ -40,9 +40,9 @@ export const useCustomResources = (
): KubernetesObjects => {
const kubernetesApi = useApi(kubernetesApiRef);
const kubernetesAuthProvidersApi = useApi(kubernetesAuthProvidersApiRef);
const getCustomObjects =
useCallback(async (): Promise<ObjectsByEntityResponse> => {
const matchersString = JSON.stringify(customResourceMatchers);
const getCustomObjects = useCallback(
async (): Promise<ObjectsByEntityResponse> => {
const auth = await generateAuth(
entity,
kubernetesApi,
@@ -53,12 +53,10 @@ export const useCustomResources = (
customResources: customResourceMatchers,
entity,
});
}, [
kubernetesApi,
entity,
kubernetesAuthProvidersApi,
customResourceMatchers,
]);
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[kubernetesApi, entity, kubernetesAuthProvidersApi, matchersString],
);
const { value, loading, error, retry } = useAsyncRetry(
() => getCustomObjects(),
@@ -36,22 +36,21 @@ export const useKubernetesObjects = (
): KubernetesObjects => {
const kubernetesApi = useApi(kubernetesApiRef);
const kubernetesAuthProvidersApi = useApi(kubernetesAuthProvidersApiRef);
const getCustomObjects =
useCallback(async (): Promise<ObjectsByEntityResponse> => {
const auth = await generateAuth(
entity,
kubernetesApi,
kubernetesAuthProvidersApi,
);
return await kubernetesApi.getObjectsByEntity({
auth,
entity,
});
}, [kubernetesApi, entity, kubernetesAuthProvidersApi]);
const getObjects = useCallback(async (): Promise<ObjectsByEntityResponse> => {
const auth = await generateAuth(
entity,
kubernetesApi,
kubernetesAuthProvidersApi,
);
return await kubernetesApi.getObjectsByEntity({
auth,
entity,
});
}, [kubernetesApi, entity, kubernetesAuthProvidersApi]);
const { value, loading, error, retry } = useAsyncRetry(
() => getCustomObjects(),
[getCustomObjects],
() => getObjects(),
[getObjects],
);
useInterval(() => retry(), intervalMs);