all repos — caroster @ 62ace2b65da0fdbeef0491f54aa8eaa380b5fcf4

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

add useProfile hook
Karian Før karian.for@gmail.com
Fri, 17 Jul 2020 12:00:36 +0200
commit

62ace2b65da0fdbeef0491f54aa8eaa380b5fcf4

parent

4bf69d2f023a689bc57210f7cd76805f0a6b40aa

M app/package.jsonapp/package.json

@@ -2,7 +2,7 @@ {

"name": "app", "version": "0.1.0", "private": true, - "proxy": "https://caroster.dev.octr.ee", + "proxy": "http://localhost:1337", "dependencies": { "@date-io/moment": "^1.3.13", "@material-ui/core": "^4.10.2",
M app/src/containers/Car/index.jsapp/src/containers/Car/index.js

@@ -3,9 +3,10 @@ import {makeStyles} from '@material-ui/core/styles';

import Divider from '@material-ui/core/Divider'; import Paper from '@material-ui/core/Paper'; import {useTranslation} from 'react-i18next'; -import {useStrapi, useAuth} from 'strapi-react-context'; +import {useStrapi} from 'strapi-react-context'; import {useEvent} from '../../contexts/Event'; import {useToast} from '../../contexts/Toast'; +import useProfile from '../../hooks/useProfile'; import PassengersList from '../PassengersList'; import HeaderEditing from './HeaderEditing'; import Header from './Header';

@@ -13,10 +14,10 @@

const Car = ({car}) => { const classes = useStyles(); const {t} = useTranslation(); + const strapi = useStrapi(); const {event} = useEvent(); + const {addEvent} = useProfile(); const {addToast} = useToast(); - const strapi = useStrapi(); - const {token, authState} = useAuth(); const [isEditing, toggleEditing] = useReducer(i => !i, false); if (!car) return null;

@@ -26,32 +27,25 @@ try {

await strapi.services.cars.update(car.id, { passengers: [...(car.passengers || []), passenger], }); - if (!!token) { - const {user} = authState; - const {events = []} = user; - await strapi.services.users.update('me', { - ...user, - events: [...events.filter(e => e !== event.id), event.id], - }); - } + addEvent(event); } catch (error) { console.error(error); } }; const removePassenger = async idx => { - if (!car?.passengers) return false; - try { - await strapi.services.events.update(event.id, { - waiting_list: [...(event.waiting_list || []), car.passengers[idx]], - }); - return await strapi.services.cars.update(car.id, { - passengers: car.passengers.filter((_, i) => i !== idx), - }); - } catch (error) { - console.error(error); - addToast(t('car.errors.cant_remove_passenger')); - return false; + if (car?.passengers) { + try { + await strapi.services.events.update(event.id, { + waiting_list: [...(event.waiting_list || []), car.passengers[idx]], + }); + await strapi.services.cars.update(car.id, { + passengers: car.passengers.filter((_, i) => i !== idx), + }); + } catch (error) { + console.error(error); + addToast(t('car.errors.cant_remove_passenger')); + } } };
M app/src/containers/WaitingList/index.jsapp/src/containers/WaitingList/index.js

@@ -23,9 +23,9 @@

const WaitingList = ({car}) => { const classes = useStyles(); const {t} = useTranslation(); + const strapi = useStrapi(); const {event} = useEvent(); const {addToast} = useToast(); - const strapi = useStrapi(); const [isEditing, toggleEditing] = useReducer(i => !i, false); const [removing, setRemoving] = useState(null); const [adding, setAdding] = useState(null);
A app/src/hooks/useProfile.js

@@ -0,0 +1,26 @@

+import {useEffect, useState} from 'react'; +import {useStrapi, useAuth} from 'strapi-react-context'; + +export default () => { + const strapi = useStrapi(); + const {token, authState} = useAuth(); + const [connected, setConnected] = useState(false); + + const addEvent = async event => { + if (connected) { + const {user} = authState; + const {events = []} = user; + //TODO: use authState.updateProfile + await strapi.services.users.update('me', { + ...user, + events: [...events.filter(e => e !== event.id), event.id], + }); + } + }; + + useEffect(() => { + setConnected(!!token); + }, [token]); + + return {connected, addEvent}; +};
M app/src/locales/fr.jsonapp/src/locales/fr.json

@@ -39,8 +39,6 @@ },

"actions": { "show_details": "Détails de l'événement", "hide_details": "Cacher les détails", - "add_car": "Ajouter une voiture", - "invite": "Inviter", "find_car": "Trouver une voiture", "copied": "Le lien a été copié dans votre presse-papier", "add_to_my_events": "Ajouter à mes évènements",
M app/src/pages/Event.jsapp/src/pages/Event.js

@@ -168,16 +168,6 @@ label: t('event.actions.my_events'),

onClick: goToDashboard, id: 'GoToDashboardTab', }, - { - label: t('event.actions.add_car'), - onClick: toggleNewCar, - id: 'NewCarTab', - }, - { - label: t('event.actions.invite'), - onClick: () => {}, - id: 'InviteTab', - }, !!token && { label: t('event.actions.logout'), onClick: logout,