Fix #4933 when cert may not have domain names

This commit is contained in:
Jamie Curnow
2025-11-14 08:33:42 +10:00
parent 79a9653b26
commit d7384c568f

View File

@@ -10,8 +10,12 @@ interface Props {
color?: string; color?: string;
} }
const DomainLink = ({ domain, color }: { domain: string; color?: string }) => { const DomainLink = ({ domain, color }: { domain?: string; color?: string }) => {
// when domain contains a wildcard, make the link go nowhere. // when domain contains a wildcard, make the link go nowhere.
// Apparently the domain can be null or undefined sometimes.
// This try is just a safeguard to prevent the whole formatter from breaking.
if (!domain) return null;
try {
let onClick: ((e: React.MouseEvent) => void) | undefined; let onClick: ((e: React.MouseEvent) => void) | undefined;
if (domain.includes("*")) { if (domain.includes("*")) {
onClick = (e: React.MouseEvent) => e.preventDefault(); onClick = (e: React.MouseEvent) => e.preventDefault();
@@ -27,18 +31,21 @@ const DomainLink = ({ domain, color }: { domain: string; color?: string }) => {
{domain} {domain}
</a> </a>
); );
} catch {
return null;
}
}; };
export function DomainsFormatter({ domains, createdOn, niceName, provider, color }: Props) { export function DomainsFormatter({ domains, createdOn, niceName, provider, color }: Props) {
const elms: ReactNode[] = []; const elms: ReactNode[] = [];
if (domains.length === 0 && !niceName) { if ((!domains || domains.length === 0) && !niceName) {
elms.push( elms.push(
<span key="nice-name" className="badge bg-danger-lt me-2"> <span key="nice-name" className="badge bg-danger-lt me-2">
Unknown Unknown
</span>, </span>,
); );
} }
if (niceName && provider !== "letsencrypt") { if (!domains || (niceName && provider !== "letsencrypt")) {
elms.push( elms.push(
<span key="nice-name" className="badge bg-info-lt me-2"> <span key="nice-name" className="badge bg-info-lt me-2">
{niceName} {niceName}
@@ -46,7 +53,9 @@ export function DomainsFormatter({ domains, createdOn, niceName, provider, color
); );
} }
if (domains) {
domains.map((domain: string) => elms.push(<DomainLink key={domain} domain={domain} color={color} />)); domains.map((domain: string) => elms.push(<DomainLink key={domain} domain={domain} color={color} />));
}
return ( return (
<div className="flex-fill"> <div className="flex-fill">