-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Expand file tree
/
Copy pathEOLModal.tsx
More file actions
67 lines (57 loc) · 1.93 KB
/
EOLModal.tsx
File metadata and controls
67 lines (57 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { Modal, Title, Content } from '@node-core/ui-components/Common/Modal';
import { useTranslations } from 'next-intl';
import { useEffect } from 'react';
import KnownSeveritySection from '#site/components/EOL/KnownSeveritySection';
import UnknownSeveritySection from '#site/components/EOL/UnknownSeveritySection';
import { SEVERITY_ORDER } from '#site/next.constants.mjs';
import type { NodeRelease } from '#site/types/releases';
import type { Vulnerability } from '#site/types/vulnerabilities';
import type { FC, ComponentProps } from 'react';
type EOLModalProps = ComponentProps<typeof Modal> & {
release: NodeRelease;
vulnerabilities: Array<Vulnerability>;
};
const EOLModal: FC<EOLModalProps> = ({
release: { codename, major: version },
vulnerabilities,
...props
}) => {
const t = useTranslations();
const modalHeading = codename
? t('components.eolModal.title', { version, codename })
: t('components.eolModal.titleWithoutCodename', { version });
useEffect(
() => {
vulnerabilities.sort(
(a, b) =>
SEVERITY_ORDER.indexOf(a.severity) -
SEVERITY_ORDER.indexOf(b.severity)
);
},
// Only change when the vulnerabilities change
// eslint-disable-next-line @eslint-react/exhaustive-deps
[vulnerabilities.length]
);
return (
<Modal {...props}>
<Title>{modalHeading}</Title>
<Content>
{vulnerabilities.length > 0 && (
<p className="m-1">
{t('components.eolModal.vulnerabilitiesMessage', {
count: vulnerabilities.length,
})}
</p>
)}
<KnownSeveritySection vulnerabilities={vulnerabilities} />
<UnknownSeveritySection vulnerabilities={vulnerabilities} />
{!vulnerabilities.length && (
<p className="m-1">
{t('components.eolModal.noVulnerabilitiesMessage')}
</p>
)}
</Content>
</Modal>
);
};
export default EOLModal;