index.tsx
 1  import Box from '@mui/material/Box';
 2  import Button from '@mui/material/Button';
 3  import {useTranslation} from 'react-i18next';
 4  import usePermissions from '../../hooks/usePermissions';
 5  
 6  interface Props {
 7    onAddSelf: () => void;
 8    onAddOther: () => void;
 9    registered: boolean;
10    variant: 'waitingList' | 'travel';
11    disabled?: boolean;
12  }
13  
14  const ADD_TO_LOCALE = {
15    waitingList: 'travel.passengers.add_to_waitingList',
16    travel: 'travel.passengers.add_to_travel',
17  };
18  
19  const AddPassengerButtons = ({
20    onAddSelf,
21    onAddOther,
22    registered,
23    variant,
24    disabled,
25  }: Props) => {
26    const {t} = useTranslation();
27    const {
28      userPermissions: {canJoinTravels, canAddToTravel},
29    } = usePermissions();
30  
31    return (
32      <Box textAlign="center">
33        {canJoinTravels() && (
34          <Box p={1} pt={2}>
35            <Button
36              sx={buttonStyle}
37              variant="contained"
38              color="primary"
39              fullWidth
40              onClick={onAddSelf}
41              disabled={disabled || registered}
42            >
43              {t(
44                registered
45                  ? 'travel.passengers.registered'
46                  : 'travel.passengers.add_me'
47              )}
48            </Button>
49          </Box>
50        )}
51        {canAddToTravel() && (
52          <Box p={1} pt={2}>
53            <Button
54              sx={buttonStyle}
55              variant="outlined"
56              color="primary"
57              fullWidth
58              onClick={onAddOther}
59              disabled={disabled}
60            >
61              {t(ADD_TO_LOCALE[variant])}
62            </Button>
63          </Box>
64        )}
65      </Box>
66    );
67  };
68  
69  const buttonStyle = {
70    py: 1,
71    px: 8,
72    md: {
73      px: 4,
74    },
75  };
76  
77  export default AddPassengerButtons;