From 3112801fbe5c8c36e15f52051162d2b6e0828812 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gr=C3=A9goire=20Aubert?= Date: Tue, 6 Nov 2018 11:43:15 +0100 Subject: [PATCH] SONAR-11321 Fallback to generic avatar if the image doesn't load --- .../components/common/OrganizationAvatar.tsx | 57 ++++++++++++------- 1 file changed, 37 insertions(+), 20 deletions(-) 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} + ) : ( + + )} +
+ ); + } } -- 2.39.5