import Button from '@material-ui/core/Button'; import Card from '@material-ui/core/Card'; import CardActionArea from '@material-ui/core/CardActionArea'; import CardActions from '@material-ui/core/CardActions'; import CardContent from '@material-ui/core/CardContent'; import { makeStyles } from '@material-ui/core/styles'; import Typography from '@material-ui/core/Typography'; import { useContext, useEffect, useState } from 'react'; import { makeAPIGetCall } from '../api/utils'; import AuthenticationContext from './Authentication/AuthenticationContext'; const useStyles = makeStyles({ root: { maxWidth: 345, }, media: { height: 140, }, }); const Profile = () => { const { user } = useContext(AuthenticationContext); const [groups, setGroups] = useState<Carpool.Group[]>([]); const [pools, setPools] = useState<Carpool.Pool[]>([]); const classes = useStyles(); useEffect(() => { makeAPIGetCall('/users/@me/pools').then((res) => { if (res.data.data) setPools(res.data.data); }); makeAPIGetCall('/users/@me/groups').then((res) => { if (res.data.data) setGroups(res.data.data); }); }, []); if (!user) { return <h1>Please Sign In</h1>; } return ( <div className="" style={{ minHeight: '100vh', backgroundColor: '#F1EAE8' }} > <h1 className="d-flex justify-content-center p-4" style={{ backgroundColor: '#F1EAE8' }} > Profile </h1> <div className="container"> <h2> <u>My Pools (private)</u> </h2> <div> {pools.map((pool) => { return ( <Card className={classes.root + 'd-inline-flex'} style={{ margin: '0.5rem' }} > <CardActionArea href={'/pools/' + pool._id}> <CardContent> <Typography gutterBottom variant="h5" component="h2"> {pool.title} </Typography> <Typography variant="body2" color="textSecondary" component="p" > {pool.description} </Typography> </CardContent> </CardActionArea> <CardActions> <Button size="small" color="primary" onClick={() => { let link: string = 'localhost:3000/pools/' + pool._id; navigator.clipboard.writeText(link); }} > Share </Button> <Button href={'/pools/' + pool._id} size="small" color="primary" > Learn More </Button> </CardActions> </Card> ); })} </div> <h2> <u>My Groups (private)</u> <div> {groups.map((group) => { return ( <Card key={group._id} style={{ padding: '0.5rem', margin: '0.5rem' }} > <h1> <a href={'/groups/' + group._id}>{group.name}</a> </h1> </Card> ); })} </div> </h2> </div> </div> ); }; export default Profile;