fix: 💬 Add variables for email templates, improve email helper #160
jump to
@@ -7,12 +7,13 @@
module.exports = { lifecycles: { async afterCreate(result) { - sendEmailsToWaitingList(result.event); + sendEmailsToWaitingList(result); }, }, }; -const sendEmailsToWaitingList = async event => { +const sendEmailsToWaitingList = async car => { + const event = car.event; const eventWaitingList = event?.waitingList || []; const userEmails = eventWaitingList.map(user => user.email).filter(Boolean); const templateId = await strapi.plugins[@@ -30,7 +31,8 @@ templateId,
subject: `Caroster: nouvelle voiture pour ${event.name}`, }, { - eventName: event.name, + event, + car, eventLink: `${STRAPI_URL}/e/${event.uuid}`, } );
@@ -57,11 +57,10 @@ templateId,
subject: `Caroster: ${event.name}`, }, { - eventName: event.name, + event, eventTime: event.date ? moment(event.date).format('dddd D MMMM YYYY') : null, - eventAddress: event.address, eventLink: `${STRAPI_URL}/e/${event.uuid}`, } );
@@ -4,6 +4,7 @@ const _pick = require('lodash/pick');
const TEMPLATE_NAME_RECAP = 'event_recap'; const PUBLIC_FIELDS = [ + 'id', 'uuid', 'name', 'email',@@ -54,7 +55,7 @@ templateId,
subject: `Caroster: ${event.name}`, }, { - eventName: event.name, + event, eventLink: `${STRAPI_URL}/e/${event.uuid}`, waitingListCount: event.waitingList?.length || 0, carsCount: event.cars?.length || 0,
@@ -104,6 +104,7 @@ places={car.seats}
addPassenger={addPassenger} onClick={removePassenger} icon="close" + isCar /> )} </Paper>
@@ -12,10 +12,11 @@
interface Props { addPassenger: (passenger: PassengerInput) => void; id: number; + isCar?: boolean; } const Input = (props: Props) => { - const {addPassenger, id} = props; + const {addPassenger, id, isCar} = props; const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [error, setError] = useState<string>();@@ -64,10 +65,14 @@ value={email}
onChange={e => setEmail(e.target.value)} onKeyDown={onKeyDown} fullWidth - label={t`car.passengers.email`} + label={t`passenger.input.email`} id={`NewPassenger-${id}-email`} name={`passenger-${id}-email`} - helperText={t`car.passengers.emailHelper`} + helperText={ + isCar + ? t`passenger.input.email_helper_car` + : t`passenger.input.email_helper` + } error={error === 'email'} /> </Box>@@ -79,7 +84,7 @@
const useStyles = makeStyles(theme => ({ emailBox: { transition: 'all 0.3s ease', - maxHeight: ({showEmail}) => (showEmail ? '5rem' : 0), + maxHeight: ({showEmail}) => (showEmail ? '6rem' : 0), overflow: 'hidden', }, }));
@@ -14,6 +14,7 @@ interface Props {
passengers: ComponentPassengerPassenger[]; icon: string; disabled?: boolean; + isCar?: boolean; places?: number; onPress?: (passengerId: string) => void; onClick?: (passengerId: string) => void;@@ -21,8 +22,16 @@ addPassenger: (passenger: PassengerInput) => void;
} const PassengersList = (props: Props) => { - const {passengers, places, addPassenger, icon, onClick, onPress, disabled} = - props; + const { + passengers, + places, + addPassenger, + icon, + onClick, + onPress, + disabled, + isCar, + } = props; const classes = useStyles(); let list = passengers;@@ -40,7 +49,11 @@ ? passengers
? places - passengers.length > 0 : places > 0 : true) && ( - <Input addPassenger={addPassenger} id={!!places ? 'Car' : 'Waiting'} /> + <Input + addPassenger={addPassenger} + id={!!places ? 'Car' : 'Waiting'} + isCar={isCar} + /> )} <List disablePadding> {!!list &&
@@ -6,7 +6,7 @@ import merge from 'deepmerge';
import isEqual from 'lodash/isEqual'; import useAuthStore from '../stores/useAuthStore'; -const {STRAPI_URL = 'http://localhost:1337'} = process.env; +const {STRAPI_URL = ''} = process.env; // https://github.com/vercel/next.js/tree/canary/examples/with-apollo // https://github.com/vercel/next.js/tree/canary/examples/layout-component@@ -46,7 +46,7 @@ });
const httpLink = uri => new HttpLink({ - uri, // Server URL (must be absolute) + uri, credentials: 'same-origin', // Additional fetch() options like `credentials` or `headers` });
@@ -108,9 +108,7 @@ "removed": "The car has been removed"
}, "passengers": { "empty": "Available seat", - "add": "Add a passenger", - "email": "Your email", - "emailHelper": "Optional - Get notified if cars are added" + "add": "Add a passenger" }, "errors": { "cant_create": "Unable to create the car",@@ -179,6 +177,11 @@ "cant_add_passenger": "Unable to add a passenger",
"cant_save_passengers": "Unable to update passengers", "cant_remove_passenger": "Unable to remove the passenger", "cant_select_car": "Unable to select the car" + }, + "input": { + "email": "Your email", + "email_helper": "Optional - Get notified if cars are added", + "email_helper_car": "Optional" } }, "signup": {
@@ -108,9 +108,7 @@ "removed": "La voiture a été supprimée"
}, "passengers": { "empty": "Place disponible", - "add": "Ajouter un passager", - "email": "Votre email", - "emailHelper": "Optionnel - Soyez notifié si des voitures sont ajoutées" + "add": "Ajouter un passager" }, "errors": { "cant_create": "Impossible de créer la voiture",@@ -179,6 +177,11 @@ "cant_add_passenger": "Impossible d'ajouter un passager",
"cant_save_passengers": "Impossible de mettre à jour passagers", "cant_remove_passenger": "Impossible de retirer le passager", "cant_select_car": "Impossible de sélectionner la voiture" + }, + "input": { + "email": "Votre email", + "email_helper": "Optionnel - Soyez notifié si des voitures sont ajoutées", + "email_helper_car": "Optionnel" } }, "signup": {
@@ -1,7 +1,16 @@
const withPWA = require('next-pwa'); -const {NODE_ENV} = process.env; +const {STRAPI_URL = 'http://localhost:1337', NODE_ENV} = process.env; module.exports = withPWA({ + async rewrites() { + return [ + { + source: '/graphql', + destination: `${STRAPI_URL}/graphql`, + }, + ]; + }, + pwa: { dest: 'public', disable: NODE_ENV !== 'production',