From 0a578959c3990fe97ae772b70044c5389d27492c Mon Sep 17 00:00:00 2001 From: codevictory Date: Wed, 29 Dec 2021 23:40:21 +0200 Subject: [PATCH] Response handling for the invitation registeration. --- src/App.tsx | 2 ++ src/components/RegForm.tsx | 22 ++++++++++-- src/constants/localization/confirmation/en.ts | 5 +++ src/constants/localization/confirmation/fi.ts | 5 +++ src/constants/localization/en.ts | 4 ++- src/constants/localization/fi.ts | 4 ++- src/constants/localization/registration/en.ts | 3 ++ src/constants/localization/registration/fi.ts | 3 ++ src/pages/Confirmation.scss | 36 +++++++++++++++++++ src/pages/Confirmation.tsx | 23 ++++++++++++ src/pages/Main.scss | 7 ++++ src/pages/Registration.tsx | 2 +- 12 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 src/constants/localization/confirmation/en.ts create mode 100644 src/constants/localization/confirmation/fi.ts create mode 100644 src/pages/Confirmation.scss create mode 100644 src/pages/Confirmation.tsx diff --git a/src/App.tsx b/src/App.tsx index cbfb43d..9a46048 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,6 +5,7 @@ import { useRecoilValue } from 'recoil'; import { currentLanguage } from './atoms/language'; import { Main } from './pages/Main'; import { Registration } from './pages/Registration'; +import { Confirmation } from './pages/Confirmation'; import { IntlProvider } from 'react-intl'; import { localization } from './constants/localization'; import { ConfigProvider } from 'antd'; @@ -23,6 +24,7 @@ export default function App() { + diff --git a/src/components/RegForm.tsx b/src/components/RegForm.tsx index 657c19f..660de82 100644 --- a/src/components/RegForm.tsx +++ b/src/components/RegForm.tsx @@ -1,4 +1,4 @@ -import { Button, Form, Input, Modal, Select } from 'antd'; +import { Button, Form, Input, Modal, notification, Select } from 'antd'; import { useParams } from 'react-router'; import './RegForm.scss'; @@ -7,6 +7,7 @@ import { arrayToString } from './utils'; import { Visitor } from '../model/visitor'; import { FormattedMessage, useIntl } from 'react-intl'; import { useState } from 'react'; +import { withRouter } from 'react-router-dom'; const { Option } = Select; @@ -46,7 +47,7 @@ const welcomeDrinks = ['alcoholBubbles', 'alcoholFreeBubbles'].map( } ); -export const RegForm = () => { +const RegForm = ({ history }: any) => { const { id } = useParams(); const intl = useIntl(); const [visitorCount, setVisitorCount] = useState(0); @@ -60,7 +61,11 @@ export const RegForm = () => { preferences: visitor.preferences ?? '', welcomeDrink: visitor.welcomeDrink ?? '', invitationId: (visitor.invitationId = atob(id)), - }); + }).then((res) => + res === 'permission-denied' + ? showError() + : history.push('/confirmation') + ); }); }; @@ -74,6 +79,15 @@ export const RegForm = () => { setIsModalVisible(false); }; + const showError = () => { + notification.error({ + message: intl.formatMessage({ id: 'registration.error.title' }), + description: intl.formatMessage({ id: 'registration.error.text' }), + duration: 0, + placement: 'bottomLeft', + }); + }; + const [form] = Form.useForm(); return ( @@ -237,3 +251,5 @@ export const RegForm = () => { ); }; + +export default withRouter(RegForm); diff --git a/src/constants/localization/confirmation/en.ts b/src/constants/localization/confirmation/en.ts new file mode 100644 index 0000000..a80b9bf --- /dev/null +++ b/src/constants/localization/confirmation/en.ts @@ -0,0 +1,5 @@ +export const confirmation: Record = { + "confirmation.title": "Your answer is registered", + "confirmation.text": "Please let Iveta or Veikko know if there comes up any changes in your plans. The given link does not work any longer after this.", + "confirmation.link": "More wedding related info can be found in here", +} \ No newline at end of file diff --git a/src/constants/localization/confirmation/fi.ts b/src/constants/localization/confirmation/fi.ts new file mode 100644 index 0000000..b2319d3 --- /dev/null +++ b/src/constants/localization/confirmation/fi.ts @@ -0,0 +1,5 @@ +export const confirmation: Record = { + "confirmation.title": "Vastuksesi on vahvistettu", + "confirmation.text": "Ilmoitathan Ivetalle tai Veikolle mikäli suunnitelmiisi tulee muutos. Antamamme linkki ei toimi enää tämän jälkeen.", + "confirmation.link": "Lisää juhliin liittyvää infoa löytyy täältä", +} \ No newline at end of file diff --git a/src/constants/localization/en.ts b/src/constants/localization/en.ts index ecd0a52..e1fd974 100644 --- a/src/constants/localization/en.ts +++ b/src/constants/localization/en.ts @@ -1,11 +1,13 @@ import { common } from "./common/en"; import { registration } from './registration/en'; import { main } from "./main/en"; +import { confirmation } from './confirmation/en'; const en: Record = { ...common, ...registration, - ...main + ...main, + ...confirmation } export default en; \ No newline at end of file diff --git a/src/constants/localization/fi.ts b/src/constants/localization/fi.ts index fcf29d6..af44067 100644 --- a/src/constants/localization/fi.ts +++ b/src/constants/localization/fi.ts @@ -1,11 +1,13 @@ import { common } from "./common/fi"; import { registration } from "./registration/fi"; import { main } from "./main/fi"; +import { confirmation } from './confirmation/fi'; const fi: Record = { ...common, ...registration, - ...main + ...main, + ...confirmation } export default fi; \ No newline at end of file diff --git a/src/constants/localization/registration/en.ts b/src/constants/localization/registration/en.ts index f5c9473..41b3c49 100644 --- a/src/constants/localization/registration/en.ts +++ b/src/constants/localization/registration/en.ts @@ -38,4 +38,7 @@ export const registration: Record = { "registration.form.submitModal.description": "The link will not work after the submit.", "registration.form.submitModal.save": "Yes, please", "registration.form.submitModal.back": "No, something is missing...", + + "registration.error.title": "Link is no longer valid", + "registration.error.text": "Your registration is already filled in. Apologies for the excess form filling...", } \ No newline at end of file diff --git a/src/constants/localization/registration/fi.ts b/src/constants/localization/registration/fi.ts index 695ffb3..673c51c 100644 --- a/src/constants/localization/registration/fi.ts +++ b/src/constants/localization/registration/fi.ts @@ -38,4 +38,7 @@ export const registration: Record = { "registration.form.submitModal.description": "Tämä linkki lakkaa toimimasta tallennuksen jälkeen.", "registration.form.submitModal.save": "Tallenna", "registration.form.submitModal.back": "Takaisin", + + "registration.error.title": "Linkki ei ole enää toiminnassa", + "registration.error.text": "Ilmoittautumisesi on jo kirjattu. Pahoittelu ylimääräisestä lomakkeen täyttelystä...", } \ No newline at end of file diff --git a/src/pages/Confirmation.scss b/src/pages/Confirmation.scss new file mode 100644 index 0000000..dea0a25 --- /dev/null +++ b/src/pages/Confirmation.scss @@ -0,0 +1,36 @@ +@import '../colors.scss'; + +.Confirmation { + text-align: center; + display: flex; + align-items: center; + flex-direction: column; + padding-top: 1rem; + font-size: 1.5rem; + + h1 { + color: $brown-text; + font-size: 3.2rem; + } + + p { + max-width: 48%; + } + + a { + color: $brown-text; + font-family: 'Montserrat-Medium'; + + .infoLink { + text-decoration: underline; + } + } +} + +@media screen and (max-width: 600px) { + .Confirmation { + p { + max-width: 90%; + } + } +} diff --git a/src/pages/Confirmation.tsx b/src/pages/Confirmation.tsx new file mode 100644 index 0000000..5b45dc9 --- /dev/null +++ b/src/pages/Confirmation.tsx @@ -0,0 +1,23 @@ +import { FormattedMessage } from 'react-intl'; +import { Link } from 'react-router-dom'; +import './Confirmation.scss'; + +export const Confirmation = () => { + return ( +
+

+ +

+

+ +

+ + >{' '} + + + {' '} + < + +
+ ); +}; diff --git a/src/pages/Main.scss b/src/pages/Main.scss index 21f1ba1..ec06980 100644 --- a/src/pages/Main.scss +++ b/src/pages/Main.scss @@ -35,6 +35,13 @@ margin-top: 0em; margin-bottom: 0em; } + + .content { + h1 { + color: $brown-text; + font-size: 3.2rem; + } + } } .extraText { diff --git a/src/pages/Registration.tsx b/src/pages/Registration.tsx index 92c8596..cf2ca81 100644 --- a/src/pages/Registration.tsx +++ b/src/pages/Registration.tsx @@ -1,7 +1,7 @@ import './Registration.scss'; import { FormattedMessage } from 'react-intl'; -import { RegForm } from '../components/RegForm'; +import RegForm from '../components/RegForm'; import { RegistrationHeader } from '../components/RegistrationHeader'; import { LanguagePicker } from '../components/LanguagePicker';