diff options
| author | eug-vs <eug-vs@keemail.me> | 2020-06-27 02:14:41 +0300 | 
|---|---|---|
| committer | eug-vs <eug-vs@keemail.me> | 2020-06-27 02:14:41 +0300 | 
| commit | 1ad4b552361e7753d164fa8ffe9f5ae132221fed (patch) | |
| tree | 482d910d7841ff39b9a1bc5af9516e2b2f64b532 /src | |
| parent | afbcea9f1c701376e140fdcf64be8265b95b367a (diff) | |
| download | which-ui-1ad4b552361e7753d164fa8ffe9f5ae132221fed.tar.gz | |
feat: add verified mark in new UserStrip comp
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/PollCard/PollCard.tsx | 26 | ||||
| -rw-r--r-- | src/components/UserStrip/UserStrip.tsx | 65 | 
2 files changed, 68 insertions, 23 deletions
diff --git a/src/components/PollCard/PollCard.tsx b/src/components/PollCard/PollCard.tsx index 72c2daf..d3b4fc2 100644 --- a/src/components/PollCard/PollCard.tsx +++ b/src/components/PollCard/PollCard.tsx @@ -3,13 +3,12 @@ import { makeStyles } from '@material-ui/core/styles';  import {    Card,    CardActionArea, -  CardMedia, -  Avatar, -  CardHeader +  CardMedia  } from '@material-ui/core/';  import { Which, Poll } from 'which-types';  import PercentageBar from './PercentageBar'; +import UserStrip from '../UserStrip/UserStrip';  import { post } from '../../requests';  interface PropTypes { @@ -38,9 +37,6 @@ const useStyles = makeStyles(theme => ({    imagesBlock: {      display: 'flex'    }, -  avatar: { -    cursor: 'pointer' -  },    rateLine: {      position: 'relative',      width: '100%', @@ -64,10 +60,6 @@ const PollCard: React.FC<PropTypes> = ({ initialPoll, navigate }) => {    const { author, contents: { left, right }, userChoice } = poll;    const date: string = new Date(poll.createdAt).toLocaleString('default', DATE_FORMAT); -  const handleNavigate = () => { -    navigate('profile', poll.author._id); -  }; -    const vote = (which: Which) => {      if (userChoice) return;      post('votes/', { which, pollId: poll._id }).then(() => { @@ -87,19 +79,7 @@ const PollCard: React.FC<PropTypes> = ({ initialPoll, navigate }) => {    return (      <Card className={classes.root}> -      <CardHeader -        avatar={( -          <Avatar -            aria-label="avatar" -            src={author.avatarUrl} -            alt={author.username[0].toUpperCase()} -            onClick={handleNavigate} -            className={classes.avatar} -          /> -        )} -        title={author.username} -        subheader={date} -      /> +      <UserStrip user={author} info={date} navigate={navigate} />        <div className={classes.imagesBlock}>          <CardActionArea onDoubleClick={handleLeft}>            <CardMedia diff --git a/src/components/UserStrip/UserStrip.tsx b/src/components/UserStrip/UserStrip.tsx new file mode 100644 index 0000000..6e84768 --- /dev/null +++ b/src/components/UserStrip/UserStrip.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import VerifiedIcon from '@material-ui/icons/CheckCircleOutline'; +import { +  Avatar, +  CardHeader +} from '@material-ui/core/'; +import { User } from 'which-types'; + + +interface PropTypes { +  user: User; +  info: string | JSX.Element +  navigate: (prefix: string, id: string) => void; +} + + +const useStyles = makeStyles(theme => ({ +  root: { +    display: 'flex', +    alignItems: 'center' +  }, +  verified: { +    marginLeft: theme.spacing(0.5), +    width: theme.spacing(2), +    height: theme.spacing(2) +  }, +  avatar: { +    cursor: 'pointer' +  } +})); + + +const UserStrip: React.FC<PropTypes> = ({ user, info, navigate }) => { +  const classes = useStyles(); +  const { +    username, +    avatarUrl, +    verified +  } = user; + +  const handleNavigate = () => { +    navigate('profile', user._id); +  }; + +  const avatar = ( +    <Avatar +      src={avatarUrl} +      alt={username[0].toUpperCase()} +      onClick={handleNavigate} +      className={classes.avatar} +    /> +  ); + +  const title = ( +    <div className={classes.root}> +      {username} +      {verified && <VerifiedIcon color="primary" className={classes.verified} />} +    </div> +  ); + +  return <CardHeader avatar={avatar} title={title} subheader={info} />; +}; + +export default UserStrip;  |