Skip to content

Commit 251bd6f

Browse files
fix: Resolve unknown badge type (#3607)
* Resolve unknown badge type * PR correction * PR correction * PR Correction * Force update replicas * PR correction * PR correction * PR correction * PR correction * PR correction
1 parent f274d8c commit 251bd6f

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

src/components/Extensibility/ExtensibilityDetails.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import {
1818
} from './helpers';
1919
import { useJsonata } from './hooks/useJsonata';
2020
import CustomResource from 'resources/CustomResourceDefinitions/CustomResources.details';
21+
import { useSetRecoilState } from 'recoil';
22+
import { resourcesConditions } from 'state/resourceConditionsAtom';
2123

2224
export const ExtensibilityDetailsCore = ({
2325
resMetaData,
@@ -28,6 +30,7 @@ export const ExtensibilityDetailsCore = ({
2830
headerActions,
2931
}) => {
3032
const { t, widgetT, exists } = useGetTranslation();
33+
const setResourcesConditions = useSetRecoilState(resourcesConditions);
3134
const { urlPath, resource, features, description: resourceDescription } =
3235
resMetaData?.general ?? {};
3336
let { disableEdit, disableDelete } = features?.actions || {};
@@ -78,6 +81,7 @@ export const ExtensibilityDetailsCore = ({
7881
const general = resMetaData?.general || {};
7982

8083
const prepareVisibility = (def, resource) => {
84+
setResourcesConditions(resource.status);
8185
const [visible, error] = jsonata(def.visibility, { resource }, true);
8286
return { visible, error };
8387
};

src/components/Extensibility/contexts/DataSources.tsx

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import pluralize from 'pluralize';
2-
import { createContext, useEffect, useRef, FC } from 'react';
2+
import { createContext, useEffect, useRef, FC, useState } from 'react';
33
import { useRecoilValue } from 'recoil';
44

55
import { useFetch } from 'shared/hooks/BackendAPI/useFetch';
66
import { useObjectState } from 'shared/useObjectState';
77
import jp from 'jsonpath';
88
import { jsonataWrapper } from '../helpers/jsonataWrapper';
99
import { activeNamespaceIdState } from 'state/activeNamespaceIdAtom';
10+
import { resourcesConditions } from 'state/resourceConditionsAtom';
1011

1112
export interface Resource {
1213
metadata: {
@@ -83,10 +84,29 @@ export const DataSourcesContextProvider: FC<Props> = ({
8384
// refetch intervals
8485
const intervals = useRef<ReturnType<typeof setTimeout>[]>([]);
8586
const fallbackNamespace = useRecoilValue(activeNamespaceIdState);
87+
const stateConditions = useRecoilValue(resourcesConditions);
88+
const [refetchSource, setRefetchSource] = useState('');
89+
90+
const findUpdatedName = (conditionsArr: string[], storeArr: string[]) => {
91+
return conditionsArr.find(item => storeArr.includes(item));
92+
};
8693

8794
// clear timeouts on component unmount
8895
// eslint-disable-next-line react-hooks/exhaustive-deps
8996
useEffect(() => () => intervals.current.forEach(clearInterval), []);
97+
useEffect(
98+
() => () => {
99+
const updatedSourceName = findUpdatedName(
100+
Object.keys(stateConditions),
101+
Object.keys(store),
102+
);
103+
if (updatedSourceName && !refetchSource) {
104+
setRefetchSource(updatedSourceName);
105+
}
106+
},
107+
// eslint-disable-next-line react-hooks/exhaustive-deps
108+
[stateConditions, refetchSource],
109+
);
90110

91111
const buildUrl = (
92112
dataSource: DataSource,
@@ -179,6 +199,7 @@ export const DataSourcesContextProvider: FC<Props> = ({
179199
const dataSource = dataSources[dataSourceName];
180200

181201
if (
202+
refetchSource === dataSourceName ||
182203
!dataSourcesDict.current[dataSourceName] ||
183204
dataSourcesDict.current[dataSourceName].rootName !==
184205
resource?.metadata?.name ||
@@ -205,7 +226,9 @@ export const DataSourcesContextProvider: FC<Props> = ({
205226
REFETCH_INTERVAL,
206227
),
207228
);
208-
229+
if (refetchSource) {
230+
setRefetchSource('reFetched');
231+
}
209232
return firstFetch;
210233
} else if (store?.[dataSourceName]?.loading) {
211234
return store?.[dataSourceName]?.firstFetch;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { atom, RecoilState } from 'recoil';
2+
3+
const defaultValue: [] = [];
4+
5+
export const resourcesConditions: RecoilState<[]> = atom<[]>({
6+
key: 'resourcesConditions',
7+
default: defaultValue,
8+
});

0 commit comments

Comments
 (0)