diff options
5 files changed, 19 insertions, 9 deletions
diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueAssign.js b/server/sonar-web/src/main/js/components/issue/components/IssueAssign.js index 783fdec65b0..ffb8dd35c17 100644 --- a/server/sonar-web/src/main/js/components/issue/components/IssueAssign.js +++ b/server/sonar-web/src/main/js/components/issue/components/IssueAssign.js @@ -58,13 +58,13 @@ export default class IssueAssign extends React.PureComponent { <Avatar className="little-spacer-right" hash={issue.assigneeAvatar} - name={issue.assigneeName} + name={issue.assigneeName || issue.assignee} size={16} /> </span> )} <span className="issue-meta-label"> - {issue.assignee ? issue.assigneeName : translate('unassigned')} + {issue.assignee ? issue.assigneeName || issue.assignee : translate('unassigned')} </span> </span> ); diff --git a/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.js b/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.js index 3a0910f6552..cce84863a06 100644 --- a/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.js +++ b/server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.js @@ -89,10 +89,10 @@ export default class IssueCommentLine extends React.PureComponent { <Avatar className="little-spacer-right" hash={comment.authorAvatar} - name={comment.authorName} + name={comment.authorName || comment.author} size={16} /> - {comment.authorName} + {comment.authorName || comment.author} </div> <div className="issue-comment-text markdown" diff --git a/server/sonar-web/src/main/js/components/issue/popups/SimilarIssuesPopup.js b/server/sonar-web/src/main/js/components/issue/popups/SimilarIssuesPopup.js index 77273cd9f39..e1b7315c266 100644 --- a/server/sonar-web/src/main/js/components/issue/popups/SimilarIssuesPopup.js +++ b/server/sonar-web/src/main/js/components/issue/popups/SimilarIssuesPopup.js @@ -100,10 +100,10 @@ export default class SimilarIssuesPopup extends React.PureComponent { <Avatar className="little-spacer-left little-spacer-right" hash={issue.assigneeAvatar} - name={issue.assigneeName} + name={issue.assigneeName || issue.assignee} size={16} /> - {issue.assigneeName} + {issue.assigneeName || issue.assignee} </span> ) : ( translate('unassigned') diff --git a/server/sonar-web/src/main/js/components/ui/Avatar.tsx b/server/sonar-web/src/main/js/components/ui/Avatar.tsx index 0c87c366251..7657c13419c 100644 --- a/server/sonar-web/src/main/js/components/ui/Avatar.tsx +++ b/server/sonar-web/src/main/js/components/ui/Avatar.tsx @@ -28,12 +28,15 @@ interface Props { enableGravatar: boolean; gravatarServerUrl: string; hash?: string; - name: string; + name?: string; size: number; } function Avatar(props: Props) { if (!props.enableGravatar || !props.hash) { + if (!props.name) { + return null; + } return <GenericAvatar className={props.className} name={props.name} size={props.size} />; } @@ -43,11 +46,11 @@ function Avatar(props: Props) { return ( <img + alt={props.name} className={classNames(props.className, 'rounded')} + height={props.size} src={url} width={props.size} - height={props.size} - alt={props.name} /> ); } diff --git a/server/sonar-web/src/main/js/components/ui/__tests__/Avatar-test.tsx b/server/sonar-web/src/main/js/components/ui/__tests__/Avatar-test.tsx index ad6d7c5bd3d..295f89e215a 100644 --- a/server/sonar-web/src/main/js/components/ui/__tests__/Avatar-test.tsx +++ b/server/sonar-web/src/main/js/components/ui/__tests__/Avatar-test.tsx @@ -42,3 +42,10 @@ it('falls back to dummy avatar', () => { ); expect(avatar).toMatchSnapshot(); }); + +it('do not fail when name is missing', () => { + const avatar = shallow( + <Avatar enableGravatar={false} gravatarServerUrl="" name={undefined} size={30} /> + ); + expect(avatar.getElement()).toBeNull(); +}); |