From 72972ba8cdc33935af80d3e240339ff6493cad34 Mon Sep 17 00:00:00 2001 From: Michael Fatemi Date: Mon, 12 Jul 2021 23:15:10 -0400 Subject: [PATCH] ADD BUTTON FOR CREATING A CARPOOL --- src/components/Carpool/Carpool.tsx | 33 +++++++------------------- src/components/Event/Event.tsx | 25 ------------------- src/components/Event/EventCarpools.tsx | 33 ++++++++++++++++++++++++-- src/components/api.ts | 10 ++++++++ 4 files changed, 50 insertions(+), 51 deletions(-) diff --git a/src/components/Carpool/Carpool.tsx b/src/components/Carpool/Carpool.tsx index cc6a6aa..b51d4ce 100644 --- a/src/components/Carpool/Carpool.tsx +++ b/src/components/Carpool/Carpool.tsx @@ -3,7 +3,7 @@ import LocationOnIcon from '@material-ui/icons/LocationOn'; import MailOutlineIcon from '@material-ui/icons/MailOutline'; import PersonAddIcon from '@material-ui/icons/PersonAdd'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { ICarpool } from '../types'; @@ -11,6 +11,7 @@ import { ICarpool } from '../types'; import UISecondaryBox from '../UI/UISecondaryBox'; import UIButton from '../UI/UIButton'; import { lightgrey } from '../colors'; +import { getCarpool } from '../api'; function MemberList({ members }: { members: ICarpool['members'] }) { return ( @@ -26,34 +27,18 @@ function MemberList({ members }: { members: ICarpool['members'] }) { export default function Carpool() { const id = +useParams<{ id: string }>().id; - const [carpool, setCarpool] = useState({ - id, - name: 'carpoollo2398', - eventId: 0, - event: { - id: 0, - name: 'test event', - latitude: 0, - longitude: 0, - formattedAddress: 'your house', - placeId: 'secret', - }, - members: [], - invitations: [], - }); + const [carpool, setCarpool] = useState(null); - // useEffect(() => { - // getCarpool(id).then(setCarpool); - // }, [id]); - - const { event, name } = carpool!; + useEffect(() => { + getCarpool(id).then(setCarpool); + }, [id]); return ( {carpool ? ( <> -

{name}

-

{event.name}

+

{carpool.name}

+

{carpool.event.name}

- {event.formattedAddress} + {carpool.event.formattedAddress}
(null); const [interested, setInterested] = useState(false); const [updating, setUpdating] = useState(false); @@ -143,29 +141,6 @@ export default function Event({ event }: { event: IEvent }) { placeId={placeId} />
- {false && ( -
- - I don't have any way to get there yet -
- )} {signups !== null && ( diff --git a/src/components/Event/EventCarpools.tsx b/src/components/Event/EventCarpools.tsx index 61557fd..ac80ea6 100644 --- a/src/components/Event/EventCarpools.tsx +++ b/src/components/Event/EventCarpools.tsx @@ -1,8 +1,11 @@ // import CallMergeIcon from '@material-ui/icons/CallMerge'; import EmojiPeopleIcon from '@material-ui/icons/EmojiPeople'; +import { useCallback } from 'react'; // import ScheduleIcon from '@material-ui/icons/Schedule'; import { useState } from 'react'; +import { createCarpool } from '../api'; import { lightgrey } from '../colors'; +import { useMe } from '../hooks'; import { ICarpool } from '../types'; import UIButton from '../UI/UIButton'; import { IEvent } from './Event'; @@ -65,14 +68,40 @@ const dummyCarpoolData: ICarpool[] = [ export default function Carpools({ event }: { event: IEvent }) { // eslint-disable-next-line const [carpools, _setCarpools] = useState(dummyCarpoolData); + const [creationStatus, setCreationStatus] = + useState(null); + const me = useMe()!; + + const createEmptyCarpool = useCallback(() => { + setCreationStatus('pending'); + + createCarpool({ name: me.name + "'s Carpool", eventId: event.id }) + .then(() => { + setCreationStatus('completed'); + }) + .catch(() => { + setCreationStatus('errored'); + }); + + setTimeout(() => setCreationStatus('completed'), 1000); + }, [event.id, me.name]); return (

Carpools


<>Available to drive? - {}} style={{ backgroundColor: lightgrey }}> - I'm not available + + {creationStatus === null + ? 'Create Empty Carpool' + : creationStatus === 'pending' + ? 'Creating...' + : creationStatus === 'completed' + ? 'Created!' + : 'Errored'} {carpools.map((carpool) => ( diff --git a/src/components/api.ts b/src/components/api.ts index 4a5bc4e..e939aff 100644 --- a/src/components/api.ts +++ b/src/components/api.ts @@ -167,3 +167,13 @@ export async function getReceivedInvitationsAndRequests() { export async function getCarpool(id: number) { return await get('/carpools/' + id); } + +export async function createCarpool({ + eventId, + name, +}: { + eventId: number; + name: string; +}) { + return await post('/carpools/', { eventId, name }); +}