2020-09-03 14:21:16 +03:00
|
|
|
import React from 'react';
|
|
|
|
import { Image } from '@freecodecamp/react-bootstrap';
|
2021-06-25 20:11:27 +05:30
|
|
|
import DefaultAvatar from '../../assets/icons/default-avatar';
|
2020-09-03 14:21:16 +03:00
|
|
|
import { defaultUserImage } from '../../../../config/misc';
|
2021-06-25 07:23:52 -07:00
|
|
|
import { borderColorPicker } from '.';
|
2020-12-16 02:02:52 -06:00
|
|
|
import { useTranslation } from 'react-i18next';
|
2020-09-03 14:21:16 +03:00
|
|
|
|
2021-06-25 07:23:52 -07:00
|
|
|
interface AvatarRendererProps {
|
|
|
|
isDonating?: boolean;
|
|
|
|
isTopContributor?: boolean;
|
|
|
|
picture: string;
|
|
|
|
userName: string;
|
|
|
|
}
|
2020-09-03 14:21:16 +03:00
|
|
|
|
2021-06-25 07:23:52 -07:00
|
|
|
function AvatarRenderer({
|
|
|
|
picture,
|
|
|
|
userName,
|
|
|
|
isDonating,
|
|
|
|
isTopContributor
|
|
|
|
}: AvatarRendererProps): JSX.Element {
|
2020-12-16 02:02:52 -06:00
|
|
|
const { t } = useTranslation();
|
2021-06-25 07:23:52 -07:00
|
|
|
const borderColor: string = borderColorPicker(isDonating, isTopContributor);
|
|
|
|
const isPlaceHolderImage =
|
2020-09-03 14:21:16 +03:00
|
|
|
/example.com|identicon.org/.test(picture) || picture === defaultUserImage;
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className={`avatar-container ${borderColor}`}>
|
|
|
|
{isPlaceHolderImage ? (
|
|
|
|
<DefaultAvatar className='avatar default-avatar' />
|
|
|
|
) : (
|
|
|
|
<Image
|
2020-12-16 02:02:52 -06:00
|
|
|
alt={t('profile.avatar', { username: userName })}
|
2020-09-03 14:21:16 +03:00
|
|
|
className='avatar'
|
|
|
|
responsive={true}
|
|
|
|
src={picture}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
AvatarRenderer.displayName = 'AvatarRenderer';
|
|
|
|
export default AvatarRenderer;
|