Skip to content

Commit 8512402

Browse files
fix: Fix showing undefined release version (#3936)
* Fix showing undefined release version * Remove option when version is undefined * Set another channel when channel from kymaResource does not exists during adding * Make variable for for repeated iteration * Add alternative version
1 parent 8870dd1 commit 8512402

File tree

1 file changed

+63
-27
lines changed

1 file changed

+63
-27
lines changed

src/components/KymaModules/components/ModulesCard.js

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useEffect, useMemo, useState } from 'react';
12
import {
23
Card,
34
CheckBox,
@@ -11,7 +12,6 @@ import {
1112
} from '@ui5/webcomponents-react';
1213
import { ExternalLink } from 'shared/components/ExternalLink/ExternalLink';
1314
import { useTranslation } from 'react-i18next';
14-
import { useEffect, useState } from 'react';
1515
import {
1616
findModuleSpec,
1717
findModuleStatus,
@@ -60,11 +60,53 @@ export default function ModulesCard({
6060
checkImage();
6161
}, [module]);
6262

63+
const defaultVersion = useMemo(
64+
() =>
65+
module?.channels?.find(
66+
channel => channel?.channel === kymaResource?.spec?.channel,
67+
)?.version,
68+
[kymaResource?.spec?.channel, module?.channels],
69+
);
70+
71+
// Check if the module version from kymaResource exists and set the channel if not.
72+
const checkIfVersionExistsAndSet = () => {
73+
if (!defaultVersion && module?.channels?.[0]?.channel) {
74+
setChannel(
75+
module,
76+
module.channels[0].channel,
77+
index,
78+
selectedModules,
79+
setSelectedModules,
80+
);
81+
}
82+
};
83+
84+
const getNameForVersion = version => {
85+
if (typeof version === 'string' && version.startsWith('v')) {
86+
return version;
87+
}
88+
return `v${version}`;
89+
};
90+
91+
const getSelectedValue = () => {
92+
const defaultValue = defaultVersion
93+
? 'predefined'
94+
: module?.channels?.[0]?.channel;
95+
return (
96+
findModuleSpec(kymaResource, module.name)?.channel ||
97+
findModuleStatus(kymaResource, module.name)?.channel ||
98+
defaultValue
99+
);
100+
};
101+
63102
return (
64103
<Card key={module.name} className="addModuleCard">
65104
<ListItemStandard
66105
className="moduleCardHeader"
67-
onClick={() => setCheckbox(module, !isChecked(module.name), index)}
106+
onClick={() => {
107+
setCheckbox(module, !isChecked(module.name), index);
108+
checkIfVersionExistsAndSet();
109+
}}
68110
>
69111
<CheckBox className="checkbox" checked={isChecked(module.name)} />
70112
<div className="titles">
@@ -84,6 +126,8 @@ export default function ModulesCard({
84126
channel => kymaResource?.spec?.channel === channel.channel,
85127
)?.version
86128
} ${checkIfStatusModuleIsBeta(module.name) ? '(Beta)' : ''}`
129+
: module?.channels?.[0]?.version
130+
? `v${module?.channels?.[0]?.version}`
87131
: t('kyma-modules.no-version')}
88132
</Text>
89133
</div>
@@ -124,33 +168,25 @@ export default function ModulesCard({
124168
setSelectedModules,
125169
);
126170
}}
127-
value={
128-
findModuleSpec(kymaResource, module.name)?.channel ||
129-
findModuleStatus(kymaResource, module.name)?.channel ||
130-
'predefined'
131-
}
171+
value={getSelectedValue()}
132172
className="channel-select"
133173
>
134-
<Option
135-
selected={
136-
!module.channels?.filter(
174+
{defaultVersion && (
175+
<Option
176+
selected={module?.channels?.find(
137177
channel =>
138178
channel.channel ===
139179
findModuleSpec(kymaResource, module.name)?.channel,
140-
)
141-
}
142-
value={'predefined'}
143-
>
144-
{`${t(
145-
'kyma-modules.predefined-channel',
146-
)} (${kymaResource?.spec?.channel[0].toUpperCase()}${kymaResource?.spec?.channel.slice(
147-
1,
148-
)} v${
149-
module.channels?.filter(
150-
channel => channel.channel === kymaResource?.spec?.channel,
151-
)[0]?.version
152-
})`}
153-
</Option>
180+
)}
181+
value={'predefined'}
182+
>
183+
{`${t(
184+
'kyma-modules.predefined-channel',
185+
)} (${kymaResource?.spec?.channel[0].toUpperCase()}${kymaResource?.spec?.channel.slice(
186+
1,
187+
)} ${getNameForVersion(defaultVersion)})`}
188+
</Option>
189+
)}
154190
{module.channels?.map(channel => (
155191
<Option
156192
selected={
@@ -165,9 +201,9 @@ export default function ModulesCard({
165201
>
166202
{`${(
167203
channel?.channel[0] || ''
168-
).toUpperCase()}${channel.channel.slice(1)} (v${
169-
channel.version
170-
})`}{' '}
204+
).toUpperCase()}${channel.channel.slice(
205+
1,
206+
)} (${getNameForVersion(channel.version)})`}{' '}
171207
</Option>
172208
))}
173209
</Select>

0 commit comments

Comments
 (0)