frontend/containers/CreateEvent/index.js (view raw)
1import {useState, useReducer} from 'react';
2import Step1 from './Step1';
3import Step2 from './Step2';
4import {useCreateEventMutation} from '../../generated/graphql';
5
6const STEPS = [Step1, Step2];
7
8const CreateEvent = () => {
9 const [step, setStep] = useState(0);
10 const [event, addToEvent] = useReducer(eventReducer, {});
11 const [sendEvent] = useCreateEventMutation();
12 const Step = STEPS[step];
13
14 const createEvent = async eventData => {
15 try {
16 const variables = {...event, ...eventData};
17 const {data} = await sendEvent({variables});
18 const returnedEvent = data.createEvent.event;
19 return returnedEvent;
20 } catch (err) {
21 console.error(err);
22 return false;
23 }
24 };
25
26 return (
27 <Step
28 event={event}
29 addToEvent={addToEvent}
30 createEvent={createEvent}
31 nextStep={() => setStep(step + 1)}
32 previousStep={() => setStep(step - 1)}
33 id="NewEvent"
34 />
35 );
36};
37
38const eventReducer = (state, item) => ({...state, ...item});
39
40export default CreateEvent;