-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Expand file tree
/
Copy pathindex.tsx
More file actions
70 lines (60 loc) · 1.96 KB
/
index.tsx
File metadata and controls
70 lines (60 loc) · 1.96 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
68
69
70
import { Modal, Title, Content } from '@node-core/ui-components/Common/Modal';
import { useTranslations } from 'next-intl';
import { useMemo } from 'react';
import type { FC, ComponentProps } 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';
type EOLModalProps = ComponentProps<typeof Modal> & {
release: NodeRelease;
vulnerabilities: Array<Vulnerability>;
};
const EOLModal: FC<EOLModalProps> = ({
release,
vulnerabilities,
...props
}) => {
const t = useTranslations();
const { codename, major: version } = release;
const modalHeading = codename
? t('components.eolModal.title', {
version,
codename,
})
: t('components.eolModal.titleWithoutCodename', { version });
useMemo(
() =>
vulnerabilities.sort(
(a, b) =>
SEVERITY_ORDER.indexOf(a.severity) -
SEVERITY_ORDER.indexOf(b.severity)
),
// Only change when the vulnerabilities change
// eslint-disable-next-line react-hooks/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;