♻️ Improve code quality #267
jump to
@@ -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,
@@ -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 (
@@ -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> </> )}
@@ -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;
@@ -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;
@@ -1,4 +1,3 @@
-import moment from 'moment'; import {useTranslation} from 'react-i18next'; import useToastsStore from '../../stores/useToastStore'; import useAddToEvents from '../../hooks/useAddToEvents';
@@ -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 {
@@ -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;
@@ -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';
@@ -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
@@ -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());