aboutsummaryrefslogtreecommitdiff
path: root/src/containers/Profile/ProfileInfo.tsx
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-08-22 13:54:56 +0300
committereug-vs <eug-vs@keemail.me>2020-08-22 13:54:56 +0300
commit668c9f4841e7118b98bb31d8e68640689be99830 (patch)
tree692c66b7fee252bba4466104ebd4c8fff02fcf19 /src/containers/Profile/ProfileInfo.tsx
parentfdf826bf38b967d2f4346e9ee5950e157f0f0beb (diff)
downloadwhich-ui-668c9f4841e7118b98bb31d8e68640689be99830.tar.gz
refactor!: simplify file operations
Diffstat (limited to 'src/containers/Profile/ProfileInfo.tsx')
-rw-r--r--src/containers/Profile/ProfileInfo.tsx23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/containers/Profile/ProfileInfo.tsx b/src/containers/Profile/ProfileInfo.tsx
index c9831f3..fbd6272 100644
--- a/src/containers/Profile/ProfileInfo.tsx
+++ b/src/containers/Profile/ProfileInfo.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useCallback } from 'react';
import { Badge, Typography } from '@material-ui/core/';
import { makeStyles } from '@material-ui/core/styles';
import { User } from 'which-types';
@@ -6,10 +6,11 @@ import CameraAltIcon from '@material-ui/icons/CameraAlt';
import VerifiedIcon from '@material-ui/icons/CheckCircleOutline';
import Skeleton from '@material-ui/lab/Skeleton';
import Highlight from './Highlight';
-import AttachLink from '../../components/AttachLink/AttachLink';
+import FileUpload from '../../components/FileUpload/FileUpload';
import Avatar from '../../components/Avatar/Avatar';
import { patch } from '../../requests';
import { useAuth } from '../../hooks/useAuth';
+import uploadFileToS3 from '../../utils/uploadFileToS3';
interface PropTypes {
@@ -88,14 +89,16 @@ const ProfileInfo: React.FC<PropTypes> = ({
}) => {
const classes = useStyles();
const { user } = useAuth();
+
const dateSince = new Date(userInfo?.createdAt || '').toLocaleDateString();
- const patchAvatar = (url: string) => {
- const id = user?._id;
- patch(`/users/${id}`, { avatarUrl: url }).then(res => {
- setUserInfo(res.data);
- });
- };
+ const handleUpdateAvatar = useCallback(async (file: File) => {
+ if (user) {
+ uploadFileToS3(file, 1)
+ .then(avatarUrl => patch(`/users/${user._id}`, { avatarUrl }))
+ .then(response => setUserInfo(response.data));
+ }
+ }, [user, setUserInfo]);
return (
<div className={classes.root}>
@@ -104,7 +107,7 @@ const ProfileInfo: React.FC<PropTypes> = ({
? <Skeleton animation="wave" variant="circle" width={150} height={150} className={classes.avatar} />
: userInfo?._id === user?._id
? (
- <AttachLink callback={patchAvatar}>
+ <FileUpload callback={handleUpdateAvatar}>
<div className={classes.avatarContainer}>
<Badge
overlap="circle"
@@ -121,7 +124,7 @@ const ProfileInfo: React.FC<PropTypes> = ({
<Avatar className={classes.avatar} user={userInfo} />
</Badge>
</div>
- </AttachLink>
+ </FileUpload>
)
: <Avatar className={classes.avatar} user={userInfo} />
}