refactor(client): avatar-renderer to TypeScript
This commit is contained in:
@ -1,26 +1,32 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Image } from '@freecodecamp/react-bootstrap';
|
||||
import DefaultAvatar from '../../assets/icons/DefaultAvatar';
|
||||
import { defaultUserImage } from '../../../../config/misc';
|
||||
import { borderColorPicker } from '../helpers';
|
||||
import { borderColorPicker } from '.';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const propTypes = {
|
||||
isDonating: PropTypes.bool,
|
||||
isTopContributor: PropTypes.bool,
|
||||
picture: PropTypes.any.isRequired,
|
||||
userName: PropTypes.string.isRequired
|
||||
};
|
||||
interface AvatarRendererProps {
|
||||
isDonating: boolean;
|
||||
isTopContributor: boolean;
|
||||
picture: unknown;
|
||||
userName: string;
|
||||
}
|
||||
|
||||
function AvatarRenderer({ picture, userName, isDonating, isTopContributor }) {
|
||||
function AvatarRenderer({
|
||||
picture,
|
||||
userName,
|
||||
isDonating,
|
||||
isTopContributor
|
||||
}: AvatarRendererProps): JSX.Element {
|
||||
const { t } = useTranslation();
|
||||
let borderColor = borderColorPicker(isDonating, isTopContributor);
|
||||
let isPlaceHolderImage =
|
||||
/example.com|identicon.org/.test(picture) || picture === defaultUserImage;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
const borderColor: unknown = borderColorPicker(isDonating, isTopContributor);
|
||||
const isPlaceHolderImage =
|
||||
/example.com|identicon.org/.test(picture as string) ||
|
||||
picture === defaultUserImage;
|
||||
|
||||
return (
|
||||
<div className={`avatar-container ${borderColor}`}>
|
||||
<div className={`avatar-container ${borderColor as string}`}>
|
||||
{isPlaceHolderImage ? (
|
||||
<DefaultAvatar className='avatar default-avatar' />
|
||||
) : (
|
||||
@ -35,6 +41,5 @@ function AvatarRenderer({ picture, userName, isDonating, isTopContributor }) {
|
||||
);
|
||||
}
|
||||
|
||||
AvatarRenderer.propTypes = propTypes;
|
||||
AvatarRenderer.displayName = 'AvatarRenderer';
|
||||
export default AvatarRenderer;
|
@ -7,5 +7,5 @@ export { default as Spacer } from './spacer';
|
||||
export { default as Link } from './link';
|
||||
export { default as CurrentChallengeLink } from './current-challenge-link';
|
||||
export { default as ImageLoader } from './image-loader';
|
||||
export { default as AvatarRenderer } from './AvatarRenderer';
|
||||
export { default as AvatarRenderer } from './avatar-renderer';
|
||||
export { default as borderColorPicker } from './border-color-picker';
|
||||
|
Reference in New Issue
Block a user