From 146947a665dbc1d2960d2062a22a106de0c71062 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sat, 21 Mar 2020 15:44:40 +0300 Subject: chore: migrate profile page to Typescript :label: --- src/pages/Profile/Profile.tsx | 95 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 src/pages/Profile/Profile.tsx (limited to 'src/pages/Profile/Profile.tsx') diff --git a/src/pages/Profile/Profile.tsx b/src/pages/Profile/Profile.tsx new file mode 100644 index 0000000..bbf55f1 --- /dev/null +++ b/src/pages/Profile/Profile.tsx @@ -0,0 +1,95 @@ +import React, { useState, useEffect } from 'react'; + +import { + Button, + makeStyles, +} from '@material-ui/core'; + +import Registration from './Registration'; +import { + Window, + ContentSection, + SmartList, +} from 'react-benzin'; +import { User, Solution, RenderPropTypes } from '../../types'; + +import SolutionCard from '../../components/SolutionCard/SolutionCard'; + +import { get } from '../../requests'; + + +const useStyles = makeStyles(theme => ({ + primary: { + padding: theme.spacing(4), + }, + cell: { + padding: theme.spacing(5), + }, +})); + + +interface PropTypes { + user: User; + setUser: (user: User) => void; +} + + +const Profile: React.FC = ({ user, setUser }) => { + const classes = useStyles(); + + const [profileSolutions, setProfileSolutions] = useState([]); + + const handleLogout = () => { + setUser({ username: 'anonymous', id: null }); + localStorage.clear(); + }; + + useEffect(() => { + get(`solutions/?author=${user.id}`).then(response => { + setProfileSolutions(response.data.reverse()); + }); + }, [user]); + + const removeSolution = (id: number): void => { + setProfileSolutions(profileSolutions.filter((solution => solution.id !== id))); + }; + + const renderItem: React.FC = ({ index, style }) => { + return ( +
+ +
+ ); + }; + + return ( + <> + +
+ { user.id? ( + +

Total amount of solutions: {profileSolutions.length}

+

You can always log out from your account!

+ +
+ ): ( + + ) + } +
+
+ + + + + ) +}; + + +export default Profile; -- cgit v1.2.3 From 0267191d92814e753b966ce3bdfbd9b804b313d7 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sat, 21 Mar 2020 16:05:52 +0300 Subject: fix: add missing types --- src/pages/Profile/Profile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages/Profile/Profile.tsx') diff --git a/src/pages/Profile/Profile.tsx b/src/pages/Profile/Profile.tsx index bbf55f1..83acb30 100644 --- a/src/pages/Profile/Profile.tsx +++ b/src/pages/Profile/Profile.tsx @@ -39,7 +39,7 @@ const Profile: React.FC = ({ user, setUser }) => { const [profileSolutions, setProfileSolutions] = useState([]); - const handleLogout = () => { + const handleLogout = (): void => { setUser({ username: 'anonymous', id: null }); localStorage.clear(); }; -- cgit v1.2.3