all repos — caroster @ 3cce17ca690426c1c205c1239652172d5e83e9fb

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

♻️ Improve code quality


#267
Simon Mulquin simon@octree.ch
Tue, 08 Mar 2022 16:41:39 +0000
commit

3cce17ca690426c1c205c1239652172d5e83e9fb

parent

d5c9ccd7f3b86f947a0809bf7894d1d72392c5b2

M frontend/containers/CreateEvent/Step1.tsxfrontend/containers/CreateEvent/Step1.tsx

@@ -33,8 +33,8 @@ const e = email.length > 0 && emailIsValid;

return connected ? n : n && e; }, [name, email, emailIsValid, connected]); - const onNext = event => { - if (event.preventDefault) event.preventDefault(); + const onNext = submitEvent => { + if (submitEvent.preventDefault) submitEvent.preventDefault(); addToEvent({ name, email: connected ? user.email : email,
M frontend/containers/CreateEvent/Step2.tsxfrontend/containers/CreateEvent/Step2.tsx

@@ -23,7 +23,7 @@ const [loading, setLoading] = useState(false);

const onCreate = async evt => { if (evt.preventDefault) evt.preventDefault(); - if (loading) return false; + if (loading) return; setLoading(true); const eventData = { date: !date ? null : moment(date).format('YYYY-MM-DD'),

@@ -35,7 +35,7 @@ const result = await createEvent(eventData);

if (!result) addToast(t('event.errors.cant_create')); else router.push(`/e/${result.uuid}`); setLoading(false); - return false; + return; }; return (
M frontend/containers/EventBar/index.tsxfrontend/containers/EventBar/index.tsx

@@ -102,6 +102,14 @@ const userInfos = user

? [{label: user.username, id: 'Email'}, {divider: true}] : []; + const UserIcon = user ? ( + <Avatar className={classes.avatar}> + {`${user.username[0]}`.toUpperCase()} + </Avatar> + ) : ( + <Icon>more_vert</Icon> + ); + return ( <AppBar className={classes.appbar}

@@ -167,13 +175,7 @@ edge="end"

id="MenuMoreInfo" onClick={e => setAnchorEl(e.currentTarget)} > - {user ? ( - <Avatar className={classes.avatar}> - {`${user.username[0]}`.toUpperCase()} - </Avatar> - ) : ( - <Icon>more_vert</Icon> - )} + {UserIcon} </IconButton> </> )}
M frontend/containers/NewPassengerDialog/AddPassengerToTravel.tsxfrontend/containers/NewPassengerDialog/AddPassengerToTravel.tsx

@@ -21,7 +21,7 @@ toggle: () => void;

open: boolean; } -const NewPassengerDialog = ({open, toggle, travel}: Props) => { +const AddPassengerToTravel = ({open, toggle, travel}: Props) => { const {t} = useTranslation(); const classes = useStyles(); const event = useEventStore(s => s.event);

@@ -90,4 +90,4 @@ </Dialog>

); }; -export default NewPassengerDialog; +export default AddPassengerToTravel;
M frontend/containers/NewPassengerDialog/AddPassengerToWaitingList.tsxfrontend/containers/NewPassengerDialog/AddPassengerToWaitingList.tsx

@@ -24,7 +24,7 @@ open: boolean;

addSelf: boolean; } -const NewPassengerDialog = ({open, toggle, addSelf}: Props) => { +const AddPassengerToWaitingList = ({open, toggle, addSelf}: Props) => { const {t} = useTranslation(); const classes = useStyles(); const event = useEventStore(s => s.event);

@@ -140,4 +140,4 @@ </Dialog>

); }; -export default NewPassengerDialog; +export default AddPassengerToWaitingList;
M frontend/containers/NewTravelDialog/useActions.tsfrontend/containers/NewTravelDialog/useActions.ts

@@ -1,4 +1,3 @@

-import moment from 'moment'; import {useTranslation} from 'react-i18next'; import useToastsStore from '../../stores/useToastStore'; import useAddToEvents from '../../hooks/useAddToEvents';
M frontend/containers/PassengersList/index.tsxfrontend/containers/PassengersList/index.tsx

@@ -4,7 +4,6 @@ import {makeStyles} from '@material-ui/core/styles';

import Passenger from './Passenger'; import { ComponentPassengerPassenger, - EditComponentPassengerPassengerInput as PassengerInput, } from '../../generated/graphql'; interface Props {
M frontend/containers/Travel/useActions.tsfrontend/containers/Travel/useActions.ts

@@ -107,27 +107,28 @@ const removeTravel = async () => {

try { // Put passengers in event waiting list (if any) // TODO Move these logics to backend and delete vehicle if no user linked - if (Array.isArray(travel?.passengers) && travel.passengers.length > 0) - await updateEventMutation({ - variables: { - uuid: event.uuid, - eventUpdate: { - waitingList: formatPassengers([ - ...(event.waitingList || []), - ...travel.passengers.map(({user, name}) => ({name, user})), - ]), + if (Array.isArray(travel?.passengers) && travel.passengers.length > 0) { + await updateEventMutation({ + variables: { + uuid: event.uuid, + eventUpdate: { + waitingList: formatPassengers([ + ...(event.waitingList || []), + ...travel.passengers.map(({user, name}) => ({name, user})), + ]), + }, }, - }, - }); - await deleteTravelMutation({ - variables: { - id: travel.id, - }, - refetchQueries: [ - {query: EventByUuidDocument, variables: {uuid: event.uuid}}, - ], - }); - addToast(t('travel.actions.removed')); + }); + await deleteTravelMutation({ + variables: { + id: travel.id, + }, + refetchQueries: [ + {query: EventByUuidDocument, variables: {uuid: event.uuid}}, + ], + }); + addToast(t('travel.actions.removed')); + } } catch (error) { console.error(error); addToast(t('travel.errors.cant_remove'));

@@ -139,12 +140,10 @@ };

const formatPassengers = (passengers = [], seats: number = 1000) => { if (!passengers) return []; - return passengers - .slice(0, seats) - .map(({__typename, user, ...passenger}) => ({ - ...passenger, - user: user?.id, - })); + return passengers.slice(0, seats).map(({__typename, user, ...passenger}) => ({ + ...passenger, + user: user?.id, + })); }; export default useActions;
M frontend/containers/WaitingList/TravelDialog.tsxfrontend/containers/WaitingList/TravelDialog.tsx

@@ -1,4 +1,4 @@

-import {forwardRef, useEffect} from 'react'; +import {forwardRef} from 'react'; import moment from 'moment'; import Link from '@material-ui/core/Link'; import Typography from '@material-ui/core/Typography';
M frontend/hooks/useTour.tsfrontend/hooks/useTour.ts

@@ -41,10 +41,10 @@ // Check if user is the event creator

useEffect(() => { if (!isReady || !event) return; - let isCreator = eventsToBeAdded.includes(event?.id); - if (profile) isCreator = profile.events.map(e => e.id).includes(event?.id); + let newIsCreator = eventsToBeAdded.includes(event?.id); + if (profile) newIsCreator = profile.events.map(e => e.id).includes(event?.id); - setTour({isCreator}); + setTour({isCreator: newIsCreator}); }, [isReady, event, eventsToBeAdded, profile]); const steps = useMemo(() => {

@@ -56,13 +56,13 @@ {content: t`tour.creator.step2`, target: '.tour_event_edit'},

{content: t`tour.creator.step3`, target: '.tour_event_share'}, {content: t`tour.creator.step4`, target: '.tour_waiting_list'}, {content: t`tour.creator.step5`, target: '.tour_travel_add'}, - ].map(step => ({...step, ...STEP_SETTINGS})) + ].map(currentStep => ({...currentStep, ...STEP_SETTINGS})) : [ {content: t`tour.user.step1`, target: '.tour_travel_add'}, {content: t`tour.user.step2`, target: '.tour_waiting_list'}, {content: t`tour.user.step3`, target: '.tour_event_infos'}, {content: t`tour.user.step4`, target: '.tour_event_share'}, - ].map(step => ({...step, ...STEP_SETTINGS})); + ].map(currentStep => ({...currentStep, ...STEP_SETTINGS})); }, [isCreator]); // Init tour
M frontend/pages/_app.tsxfrontend/pages/_app.tsx

@@ -13,7 +13,6 @@ import Metas from '../containers/Metas';

import Toasts from '../components/Toasts'; import theme from '../theme'; import 'moment/locale/fr-ch'; -import '../i18n'; import {useTranslation} from 'react-i18next'; import useAuthStore from '../stores/useAuthStore'; import {getUserLng} from '../i18n';

@@ -27,8 +26,6 @@ const user = useAuthStore();

const {i18n} = useTranslation(); const language = useLangStore(s => s.language); const setLanguage = useLangStore(s => s.setLanguage); - - const i18nLang = i18n.language.split('-')[1]; useEffect(() => { setLanguage(getUserLng());