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