diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/GithubAvatar/GithubAvatar.tsx | 39 | ||||
| -rw-r--r-- | src/components/SolutionCard/SolutionCard.tsx | 9 | 
2 files changed, 41 insertions, 7 deletions
| diff --git a/src/components/GithubAvatar/GithubAvatar.tsx b/src/components/GithubAvatar/GithubAvatar.tsx new file mode 100644 index 0000000..32ac553 --- /dev/null +++ b/src/components/GithubAvatar/GithubAvatar.tsx @@ -0,0 +1,39 @@ +import React from 'react'; + +import { +  Avatar, +  Link, +} from '@material-ui/core'; + +interface PropTypes { +  username: string; +} + +const githubUrl = 'https://github.com/'; +const getUserGithubUrl = (username: string): string => githubUrl + username; + +const GithubAvatar: React.FC<PropTypes> = ({ username }) => { +  if (username === 'anonymous') return <Avatar/>; + +  const userGithubUrl = getUserGithubUrl(username); +  const avatarUrl = userGithubUrl + '.png'; +  const usernameTokens = username.split(/[ ,.\-_#@;]/g); +  const altText = ( +    (usernameTokens.length > 1)? +      (usernameTokens[0][0] + usernameTokens[1][0]) +    : +      usernameTokens[0][0] +  ).toUpperCase() + +  return ( +    <Link href={userGithubUrl}> +      <Avatar> +        <img src={avatarUrl} alt={altText} /> +      </Avatar> +    </Link> +  ) +}; + +export { getUserGithubUrl }; +export default GithubAvatar; + diff --git a/src/components/SolutionCard/SolutionCard.tsx b/src/components/SolutionCard/SolutionCard.tsx index 5adbff9..7ec8888 100644 --- a/src/components/SolutionCard/SolutionCard.tsx +++ b/src/components/SolutionCard/SolutionCard.tsx @@ -6,7 +6,6 @@ import {    CardHeader,    CardContent,    IconButton, -  Avatar,    Grid,    Menu,    MenuItem, @@ -18,6 +17,7 @@ import TimerIcon from '@material-ui/icons/Timer';  import MoreVertIcon from '@material-ui/icons/MoreVert';  import DeleteIcon from '@material-ui/icons/Delete'; +import GithubAvatar from '../GithubAvatar/GithubAvatar';  import { del } from '../../requests'; @@ -77,12 +77,7 @@ const SolutionCard: React.FC<PropTypes> = ({ data, removeThisCard }) => {    return (      <Card className={classes.root}>        <CardHeader -        avatar={ -          author === 'anonymous'? -            (<Avatar/>) -            : -            (<Avatar>{author[0].toUpperCase()}</Avatar>) -        } +        avatar={<GithubAvatar username={author} />}          title={author}          subheader={date.toLocaleString('default', DATE_FORMAT)}          action={ | 
