Skip to content

Commit b6e6cfd

Browse files
PR comments
1 parent 993de40 commit b6e6cfd

File tree

1 file changed

+35
-36
lines changed

1 file changed

+35
-36
lines changed

src/components/ComponentsSelection/ComponentsSelectionContainer.tsx

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -54,61 +54,60 @@ export const ComponentsSelectionContainer: React.FC<ComponentsSelectionProps> =
5454
);
5555

5656
useEffect(() => {
57-
if (
58-
initialized.current ||
59-
!availableManagedComponentsListData?.items ||
60-
availableManagedComponentsListData.items.length === 0
61-
) {
57+
const items = availableManagedComponentsListData?.items ?? [];
58+
59+
if (!items.length) {
60+
if (!initialized.current) return;
61+
setTemplateDefaultsError(null);
6262
return;
6363
}
6464

65-
const newComponentsList = availableManagedComponentsListData.items
66-
.map((item) => {
67-
const versions = sortVersions(item.status.versions);
68-
const template = defaultComponents.find((dc) => dc.name === item.metadata.name);
69-
const templateVersion = template?.version;
70-
const selectedVersion = template
71-
? templateVersion && versions.includes(templateVersion)
72-
? templateVersion
73-
: ''
74-
: (versions[0] ?? '');
75-
return {
76-
name: item.metadata.name,
77-
versions,
78-
selectedVersion,
79-
isSelected: !!template,
80-
documentationUrl: '',
81-
};
82-
})
83-
.filter((component) => !removeComponents.find((item) => item === component.name));
84-
85-
setComponentsList(newComponentsList);
86-
initialized.current = true;
87-
}, [availableManagedComponentsListData, setComponentsList, defaultComponents]);
65+
if (!initialized.current) {
66+
const newComponentsList = items
67+
.map((item) => {
68+
const versions = sortVersions(item.status.versions);
69+
const template = defaultComponents.find((dc) => dc.name === item.metadata.name);
70+
const templateVersion = template?.version;
71+
const selectedVersion = template
72+
? templateVersion && versions.includes(templateVersion)
73+
? templateVersion
74+
: ''
75+
: (versions[0] ?? '');
76+
return {
77+
name: item.metadata.name,
78+
versions,
79+
selectedVersion,
80+
isSelected: !!template,
81+
documentationUrl: '',
82+
};
83+
})
84+
.filter((component) => !removeComponents.find((item) => item === component.name));
85+
86+
setComponentsList(newComponentsList);
87+
initialized.current = true;
88+
}
8889

89-
useEffect(() => {
90-
const items = availableManagedComponentsListData?.items ?? [];
91-
if (items.length === 0 || !defaultComponents.length) {
90+
if (!defaultComponents.length) {
9291
setTemplateDefaultsError(null);
9392
return;
9493
}
9594

96-
const errs: string[] = [];
95+
const errors: string[] = [];
9796
defaultComponents.forEach((dc: TemplateDefaultComponent) => {
9897
if (!dc?.name) return;
9998
const item = items.find((it) => it.metadata.name === dc.name);
10099
if (!item) {
101-
errs.push(`Component "${dc.name}" from template is not available.`);
100+
errors.push(`Component "${dc.name}" from template is not available.`);
102101
return;
103102
}
104103
const versions: string[] = Array.isArray(item.status?.versions) ? item.status.versions : [];
105104
if (dc.version && !versions.includes(dc.version)) {
106-
errs.push(`Component "${dc.name}" version "${dc.version}" from template is not available.`);
105+
errors.push(`Component "${dc.name}" version "${dc.version}" from template is not available.`);
107106
}
108107
});
109108

110-
setTemplateDefaultsError(errs.length ? errs.join('\n') : null);
111-
}, [availableManagedComponentsListData, defaultComponents]);
109+
setTemplateDefaultsError(errors.length ? errors.join('\n') : null);
110+
}, [availableManagedComponentsListData, defaultComponents, setComponentsList]);
112111

113112
useEffect(() => {
114113
if (!initialized.current) return;

0 commit comments

Comments
 (0)