From 793b499c760ebb8396809c03479fd618396a4961 Mon Sep 17 00:00:00 2001 From: Thomas Ruoff Date: Sat, 1 Aug 2020 16:05:58 +0200 Subject: [PATCH] move rest into pages --- {components => pages/components}/contact.js | 0 {components => pages/components}/dateSelect.js | 2 +- {components => pages/components}/reason.js | 0 {components => pages/components}/required.js | 2 -- {components => pages/components}/wizard.js | 4 ++-- {context => pages/context}/wizardStore.js | 13 +++++++++++-- lib/dateHelper.js => pages/helpers/date.js | 0 pages/helpers/storage.js | 17 +++++++++++++++++ pages/index.js | 2 +- 9 files changed, 32 insertions(+), 8 deletions(-) rename {components => pages/components}/contact.js (100%) rename {components => pages/components}/dateSelect.js (98%) rename {components => pages/components}/reason.js (100%) rename {components => pages/components}/required.js (69%) rename {components => pages/components}/wizard.js (90%) rename {context => pages/context}/wizardStore.js (90%) rename lib/dateHelper.js => pages/helpers/date.js (100%) create mode 100644 pages/helpers/storage.js diff --git a/components/contact.js b/pages/components/contact.js similarity index 100% rename from components/contact.js rename to pages/components/contact.js diff --git a/components/dateSelect.js b/pages/components/dateSelect.js similarity index 98% rename from components/dateSelect.js rename to pages/components/dateSelect.js index 84d4c99..f5c5c4f 100644 --- a/components/dateSelect.js +++ b/pages/components/dateSelect.js @@ -10,7 +10,7 @@ import 'react-dates/initialize' import { DateRangePicker, SingleDatePicker } from 'react-dates' import Required from './required' -import { dateFormat } from '../lib/dateHelper' +import { dateFormat } from '../helpers/date' const fetcher = (path) => fetch(path).then((r) => r.json()) diff --git a/components/reason.js b/pages/components/reason.js similarity index 100% rename from components/reason.js rename to pages/components/reason.js diff --git a/components/required.js b/pages/components/required.js similarity index 69% rename from components/required.js rename to pages/components/required.js index 3214b5f..4e5e120 100644 --- a/components/required.js +++ b/pages/components/required.js @@ -1,4 +1,2 @@ -import react from 'react' - const Required = () => * export default Required diff --git a/components/wizard.js b/pages/components/wizard.js similarity index 90% rename from components/wizard.js rename to pages/components/wizard.js index a4d9e7b..52e16e4 100644 --- a/components/wizard.js +++ b/pages/components/wizard.js @@ -11,7 +11,7 @@ import Contact from './contact' //import Driver from './driver' function WizardInternal() { - const { onSubmit, state } = useContext(WizardContext) + const { onSubmit, state, storeData } = useContext(WizardContext) const { postData, postDataSuccess, postDataError } = state if (postDataSuccess) { @@ -23,7 +23,7 @@ function WizardInternal() { Sollen die eingegebenen Daten in Deinem Browser für die nächste Buchung gespeichert werden?

- + ) } diff --git a/context/wizardStore.js b/pages/context/wizardStore.js similarity index 90% rename from context/wizardStore.js rename to pages/context/wizardStore.js index 3266e7b..ab386e6 100644 --- a/context/wizardStore.js +++ b/pages/context/wizardStore.js @@ -1,4 +1,6 @@ -import React, { useReducer } from 'react' +import React, { useReducer, useEffect } from 'react' + +import { storeFormData, loadFormData } from '../helpers/storage' export const WizardContext = React.createContext() @@ -93,6 +95,11 @@ async function createBooking(formData) { export default function WizardStore({ children }) { const [state, dispatch] = useReducer(debugReducer, initialState) + useEffect(() => { + const data = loadFormData() + dispatch({ type: ACTIONS.SET_FORM_DATA, payload: data }) + }, []) + const onChangeEvent = (event) => { const { name, value } = event.target @@ -121,9 +128,11 @@ export default function WizardStore({ children }) { } } + const storeData = () => storeFormData(state.formData) + return ( {children} diff --git a/lib/dateHelper.js b/pages/helpers/date.js similarity index 100% rename from lib/dateHelper.js rename to pages/helpers/date.js diff --git a/pages/helpers/storage.js b/pages/helpers/storage.js new file mode 100644 index 0000000..6848e3a --- /dev/null +++ b/pages/helpers/storage.js @@ -0,0 +1,17 @@ +const FORM_DATA_KEY = 'pfadiBussleFormData' + +function getStorage() { + return localStorage +} + +export function storeFormData({ org, name, email, street, zip, city }) { + getStorage().setItem( + FORM_DATA_KEY, + JSON.stringify({ org, name, email, street, zip, city }) + ) +} + +export function loadFormData() { + const dataAsString = getStorage().getItem(FORM_DATA_KEY) + return JSON.parse(dataAsString || '{}') +} diff --git a/pages/index.js b/pages/index.js index 633b83e..0e2559e 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,6 +1,6 @@ import Head from 'next/head' -import Wizard from '../components/wizard' +import Wizard from './components/wizard' export default function Home() { return (