diff --git a/src/components/Event.tsx b/src/components/Event.tsx index 278339b..7d6d5bb 100644 --- a/src/components/Event.tsx +++ b/src/components/Event.tsx @@ -1,5 +1,9 @@ import { useCallback, useEffect, useRef, useState } from 'react'; -import { addEventSignup, getEventSignups, removeEventSignup } from './api'; +import { + addOrUpdateEventSignup, + getEventSignups, + removeEventSignup, +} from './api'; import { green, lightgrey } from './colors'; import { useMe } from './hooks'; import latlongdist, { R_miles } from './latlongdist'; @@ -312,9 +316,9 @@ export default function Event({ event }: { event: IEvent }) { } }; - const addSignup = () => { + const addOrUpdateSignup = () => { if (!prev.interested) { - addEventSignup(event.id, placeId!) + addOrUpdateEventSignup(event.id, placeId) .then(() => { prev.placeId = placeId; prev.eventId = event.id; @@ -328,10 +332,8 @@ export default function Event({ event }: { event: IEvent }) { if (!interested) { removeSignup(); - } else if (placeId == null) { - removeSignup(); } else { - addSignup(); + addOrUpdateSignup(); } }, [event.id, interested, placeId, updating]); diff --git a/src/components/api.ts b/src/components/api.ts index 5565c7e..3ff9f76 100644 --- a/src/components/api.ts +++ b/src/components/api.ts @@ -55,7 +55,10 @@ export async function getEventSignups( return await get(`/events/${eventId}/signups`); } -export async function addEventSignup(eventId: number, placeId: string) { +export async function addOrUpdateEventSignup( + eventId: number, + placeId: string | null +) { return await post(`/events/${eventId}/signup`, { placeId, });