aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueAssign.js4
-rw-r--r--server/sonar-web/src/main/js/components/issue/components/IssueCommentLine.js4
-rw-r--r--server/sonar-web/src/main/js/components/issue/popups/SimilarIssuesPopup.js4
-rw-r--r--server/sonar-web/src/main/js/components/ui/Avatar.tsx9
-rw-r--r--server/sonar-web/src/main/js/components/ui/__tests__/Avatar-test.tsx7
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();
+});