all repos — caroster @ e3dd820256e0c4ea2c317a33c8fc29f9a83f3711

[Octree] Group carpool to your event https://caroster.io

frontend/containers/Travel/PassengerActions.tsx (view raw)

 1import {useState} from 'react';
 2import {Box, Icon, IconButton} from '@mui/material';
 3import usePermissions from '../../hooks/usePermissions';
 4import RemovePassengerModal from './RemovePassengerModal';
 5import useActions from './useActions';
 6import {PassengerEntity, TravelEntity} from '../../generated/graphql';
 7
 8type Props = {
 9  passenger: PassengerEntity;
10  travel: TravelEntity;
11  setFocusPassenger: (passenger: PassengerEntity) => void;
12};
13
14const PassengerActions = (props: Props) => {
15  const {passenger, travel, setFocusPassenger} = props;
16  const [isRemovingPassenger, setIsRemovingPassenger] = useState(false);
17  const {
18    userPermissions: {canDeletePassenger, canSeePassengerDetails},
19  } = usePermissions();
20  const {removePassengerFromTravel} = useActions({travel});
21
22  return (
23    <>
24      <Box display="flex">
25        {canDeletePassenger(passenger) && {
26            id: passenger.id,
27            attributes: {
28              ...passenger.attributes,
29              travel: {data: travel},
30            },
31          } && (
32            <IconButton
33              color="primary"
34              onClick={() => setIsRemovingPassenger(true)}
35              tabIndex={-1}
36            >
37              <Icon>delete_outline</Icon>
38            </IconButton>
39          )}
40        {canSeePassengerDetails(passenger) && (
41          <IconButton
42            color="primary"
43            onClick={() => setFocusPassenger(passenger)}
44          >
45            <Icon>info_outlined</Icon>
46          </IconButton>
47        )}
48      </Box>
49      <RemovePassengerModal
50        passenger={isRemovingPassenger && passenger}
51        close={() => setIsRemovingPassenger(false)}
52        removePassenger={removePassengerFromTravel}
53      />
54    </>
55  );
56};
57
58export default PassengerActions;