@@ -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
3239export 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