({
release: { codename, major: version },
vulnerabilities,
...props
})
| 16 | }; |
| 17 | |
| 18 | const EOLModal: FC<EOLModalProps> = ({ |
| 19 | release: { codename, major: version }, |
| 20 | vulnerabilities, |
| 21 | ...props |
| 22 | }) => { |
| 23 | const t = useTranslations(); |
| 24 | |
| 25 | const modalHeading = codename |
| 26 | ? t('components.eolModal.title', { version, codename }) |
| 27 | : t('components.eolModal.titleWithoutCodename', { version }); |
| 28 | |
| 29 | useEffect( |
| 30 | () => { |
| 31 | vulnerabilities.sort( |
| 32 | (a, b) => |
| 33 | SEVERITY_ORDER.indexOf(a.severity) - |
| 34 | SEVERITY_ORDER.indexOf(b.severity) |
| 35 | ); |
| 36 | }, |
| 37 | // Only change when the vulnerabilities change |
| 38 | // eslint-disable-next-line @eslint-react/exhaustive-deps |
| 39 | [vulnerabilities.length] |
| 40 | ); |
| 41 | |
| 42 | return ( |
| 43 | <Modal {...props}> |
| 44 | <Title>{modalHeading}</Title> |
| 45 | <Content> |
| 46 | {vulnerabilities.length > 0 && ( |
| 47 | <p className="m-1"> |
| 48 | {t('components.eolModal.vulnerabilitiesMessage', { |
| 49 | count: vulnerabilities.length, |
| 50 | })} |
| 51 | </p> |
| 52 | )} |
| 53 | |
| 54 | <KnownSeveritySection vulnerabilities={vulnerabilities} /> |
| 55 | <UnknownSeveritySection vulnerabilities={vulnerabilities} /> |
| 56 | |
| 57 | {!vulnerabilities.length && ( |
| 58 | <p className="m-1"> |
| 59 | {t('components.eolModal.noVulnerabilitiesMessage')} |
| 60 | </p> |
| 61 | )} |
| 62 | </Content> |
| 63 | </Modal> |
| 64 | ); |
| 65 | }; |
| 66 | |
| 67 | export default EOLModal; |
nothing calls this directly
no outgoing calls
no test coverage detected