import CancelIcon from '@material-ui/icons/Cancel'; import PersonAddIcon from '@material-ui/icons/PersonAdd'; import { useContext, useMemo } from 'react'; import latlongdist, { R_miles } from '../../lib/latlongdist'; import { useMe } from '../hooks'; import { IEventSignup } from '../types'; import EventCarpoolCreateButton from './EventCarpoolCreateButton'; import EventContext from './EventContext'; import pickLatLong from './pickLatLong'; import { useMySignup } from './EventHooks'; function EventSignup({ signup }: { signup: IEventSignup }) { const { user } = signup; const me = useMe(); const { tentativeInvites, event } = useContext(EventContext); const mySignup = useMySignup(); const myLocation = pickLatLong(mySignup); const theirLocation = pickLatLong(signup); const eventLocation = pickLatLong(event)!; const extraDistance = useMemo(() => { if (myLocation != null && theirLocation != null) { const meToThem = latlongdist(myLocation, theirLocation, R_miles); const themToLocation = latlongdist(theirLocation, eventLocation, R_miles); const meToLocation = latlongdist(myLocation, eventLocation, R_miles); return meToThem + themToLocation - meToLocation; } else { return null; } }, [eventLocation, myLocation, theirLocation]); const isTentativelyInvited = signup.user.id in tentativeInvites; const hasCarpool = useMemo( () => event.carpools.some((carpool) => carpool.members.some((member) => member.id === me?.id) ), [event.carpools, me?.id] ); if (user.id === me?.id) { return null; } return (