add useProfile hook
Karian Før karian.for@gmail.com
Fri, 17 Jul 2020 12:00:36 +0200
6 files changed,
45 insertions(+),
37 deletions(-)
M
app/package.json
→
app/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.js
→
app/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.js
→
app/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.json
→
app/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.js
→
app/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,