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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user