frontend/containers/Travel/RemovePassengerModal.tsx (view raw)
1import {useTranslation} from 'next-i18next';
2import {
3 Typography,
4 Dialog,
5 Button,
6 DialogContent,
7 DialogActions,
8 DialogTitle,
9} from '@mui/material';
10import useProfile from '../../hooks/useProfile';
11import useEventStore from '../../stores/useEventStore';
12import {PassengerEntity} from '../../generated/graphql';
13
14interface Props {
15 passenger: PassengerEntity;
16 close: () => void;
17 removePassenger: (id: string) => void;
18}
19
20const RemovePassengerModal = ({passenger, close, removePassenger}: Props) => {
21 const {t} = useTranslation();
22 const event = useEventStore(s => s.event);
23 const isCarosterPlus = event.enabled_modules?.includes('caroster-plus');
24 const {userId} = useProfile();
25 const IsPassengerIsUser = passenger.attributes?.user?.data?.id === userId;
26
27 const getDescriptionKey = () => {
28 if (IsPassengerIsUser && isCarosterPlus) {
29 return 'travel.removePassengerModal.plus.self.description';
30 } else if (isCarosterPlus) {
31 return 'travel.removePassengerModal.plus.description';
32 } else if (IsPassengerIsUser) {
33 return 'travel.removePassengerModal.self.description';
34 } else {
35 return 'travel.removePassengerModal.description';
36 }
37 };
38
39 return (
40 <Dialog open={!!passenger} onClose={close}>
41 <DialogTitle>
42 {t(
43 IsPassengerIsUser
44 ? 'travel.removePassengerModal.self.title'
45 : 'travel.removePassengerModal.title'
46 )}
47 </DialogTitle>
48 <DialogContent>
49 <Typography>{t(getDescriptionKey())}</Typography>
50 </DialogContent>
51 <DialogActions>
52 <Button onClick={close}>
53 {t('travel.removePassengerModal.cancel')}
54 </Button>
55 <Button
56 variant="contained"
57 onClick={() => removePassenger(passenger.id)}
58 >
59 {t(
60 IsPassengerIsUser
61 ? 'travel.removePassengerModal.self.remove'
62 : 'travel.removePassengerModal.remove'
63 )}
64 </Button>
65 </DialogActions>
66 </Dialog>
67 );
68};
69
70export default RemovePassengerModal;