Skip to content

Commit d7384c5

Browse files
committed
Fix #4933 when cert may not have domain names
1 parent 79a9653 commit d7384c5

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

frontend/src/components/Table/Formatter/DomainsFormatter.tsx

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,43 +10,52 @@ interface Props {
1010
color?: string;
1111
}
1212

13-
const DomainLink = ({ domain, color }: { domain: string; color?: string }) => {
13+
const DomainLink = ({ domain, color }: { domain?: string; color?: string }) => {
1414
// when domain contains a wildcard, make the link go nowhere.
15-
let onClick: ((e: React.MouseEvent) => void) | undefined;
16-
if (domain.includes("*")) {
17-
onClick = (e: React.MouseEvent) => e.preventDefault();
15+
// Apparently the domain can be null or undefined sometimes.
16+
// This try is just a safeguard to prevent the whole formatter from breaking.
17+
if (!domain) return null;
18+
try {
19+
let onClick: ((e: React.MouseEvent) => void) | undefined;
20+
if (domain.includes("*")) {
21+
onClick = (e: React.MouseEvent) => e.preventDefault();
22+
}
23+
return (
24+
<a
25+
key={domain}
26+
href={`http://${domain}`}
27+
target="_blank"
28+
onClick={onClick}
29+
className={cn("badge", color ? `bg-${color}-lt` : null, "domain-name", "me-2")}
30+
>
31+
{domain}
32+
</a>
33+
);
34+
} catch {
35+
return null;
1836
}
19-
return (
20-
<a
21-
key={domain}
22-
href={`http://${domain}`}
23-
target="_blank"
24-
onClick={onClick}
25-
className={cn("badge", color ? `bg-${color}-lt` : null, "domain-name", "me-2")}
26-
>
27-
{domain}
28-
</a>
29-
);
3037
};
3138

3239
export function DomainsFormatter({ domains, createdOn, niceName, provider, color }: Props) {
3340
const elms: ReactNode[] = [];
34-
if (domains.length === 0 && !niceName) {
41+
if ((!domains || domains.length === 0) && !niceName) {
3542
elms.push(
3643
<span key="nice-name" className="badge bg-danger-lt me-2">
3744
Unknown
3845
</span>,
3946
);
4047
}
41-
if (niceName && provider !== "letsencrypt") {
48+
if (!domains || (niceName && provider !== "letsencrypt")) {
4249
elms.push(
4350
<span key="nice-name" className="badge bg-info-lt me-2">
4451
{niceName}
4552
</span>,
4653
);
4754
}
4855

49-
domains.map((domain: string) => elms.push(<DomainLink key={domain} domain={domain} color={color} />));
56+
if (domains) {
57+
domains.map((domain: string) => elms.push(<DomainLink key={domain} domain={domain} color={color} />));
58+
}
5059

5160
return (
5261
<div className="flex-fill">

0 commit comments

Comments
 (0)