From: Grégoire Aubert Date: Tue, 6 Nov 2018 10:43:15 +0000 (+0100) Subject: SONAR-11321 Fallback to generic avatar if the image doesn't load X-Git-Tag: 7.5~133 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3112801fbe5c8c36e15f52051162d2b6e0828812;p=sonarqube.git SONAR-11321 Fallback to generic avatar if the image doesn't load --- diff --git a/server/sonar-web/src/main/js/components/common/OrganizationAvatar.tsx b/server/sonar-web/src/main/js/components/common/OrganizationAvatar.tsx index c4ad360e729..bda1c6774a0 100644 --- a/server/sonar-web/src/main/js/components/common/OrganizationAvatar.tsx +++ b/server/sonar-web/src/main/js/components/common/OrganizationAvatar.tsx @@ -20,31 +20,48 @@ import * as React from 'react'; import * as classNames from 'classnames'; import GenericAvatar from '../ui/GenericAvatar'; +import { OrganizationBase } from '../../app/types'; import './OrganizationAvatar.css'; interface Props { className?: string; - organization: { - avatar?: string; - name: string; - }; + organization: Pick; small?: boolean; } -export default function OrganizationAvatar({ className, organization, small }: Props) { - return ( -
- {organization.avatar ? ( - {organization.name} - ) : ( - - )} -
- ); +interface State { + imgLoadError: boolean; +} + +export default class OrganizationAvatar extends React.PureComponent { + state = { imgLoadError: false }; + + handleImgError = () => { + this.setState({ imgLoadError: true }); + }; + + render() { + const { className, organization, small } = this.props; + const { imgLoadError } = this.state; + return ( +
+ {organization.avatar && !imgLoadError ? ( + {organization.name} + ) : ( + + )} +
+ ); + } }