import {useMemo, useReducer} from 'react'; import Divider from '@mui/material/Divider'; import Paper from '@mui/material/Paper'; import Button from '@mui/material/Button'; import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'; import {useTheme} from '@mui/styles'; import {useTranslation} from 'react-i18next'; import HeaderEditing from './HeaderEditing'; import Header from './Header'; import useActions from './useActions'; import PassengersList from '../PassengersList'; import AddPassengerButtons from '../AddPassengerButtons'; import useProfile from '../../hooks/useProfile'; import useMapStore from '../../stores/useMapStore'; import {Travel as TravelType} from '../../generated/graphql'; interface Props { travel: TravelType & {id: string}; getAddPassengerFunction: (addSelf: boolean) => () => void; } const Travel = (props: Props) => { const {travel} = props; const {t} = useTranslation(); const theme = useTheme(); const [isEditing, toggleEditing] = useReducer(i => !i, false); const actions = useActions({travel}); const {userId, connected} = useProfile(); const {focusedTravel} = useMapStore(); const focused = focusedTravel === travel.id; if (!travel) return null; const disableNewPassengers = travel.passengers.data?.length >= travel.seats; const registered = useMemo(() => { if (!connected) return false; const isInTravel = travel.passengers?.data.some( passenger => passenger.attributes.user?.data?.id === `${userId}` ); return isInTravel; }, [travel, userId]); return ( {isEditing ? ( ) : (
)} {!isEditing && ( <> {travel.passengers.data.length > 0 && } void}) => ( )} /> )} ); }; export default Travel;