From 6d94a9f69b43a3a9ffbc2a37fec78653f3c7c188 Mon Sep 17 00:00:00 2001 From: codevictory Date: Sun, 2 Jan 2022 22:25:28 +0200 Subject: [PATCH] Invitation declining modal and functionality. --- src/api.ts | 10 ++- src/components/RegForm.tsx | 83 ++++++++++++++----- src/constants/localization/registration/en.ts | 5 ++ src/constants/localization/registration/fi.ts | 7 +- 4 files changed, 83 insertions(+), 22 deletions(-) diff --git a/src/api.ts b/src/api.ts index 744957e..59fbf41 100644 --- a/src/api.ts +++ b/src/api.ts @@ -27,6 +27,14 @@ export const addVisitor = async (visitor: Visitor): Promise => { } catch(error: any) { return error.code; } - await setDoc(doc(db, "submitted", visitor.invitationId), {}); + return 'success'; +} + +export const submitInvitation = async (invitationId: string): Promise => { + try { + await setDoc(doc(db, "submitted", invitationId), {}); + } catch(error: any) { + return error.code; + } return 'success'; } \ No newline at end of file diff --git a/src/components/RegForm.tsx b/src/components/RegForm.tsx index 660de82..f0d94ea 100644 --- a/src/components/RegForm.tsx +++ b/src/components/RegForm.tsx @@ -2,7 +2,7 @@ import { Button, Form, Input, Modal, notification, Select } from 'antd'; import { useParams } from 'react-router'; import './RegForm.scss'; -import { addVisitor } from '../api'; +import { addVisitor, submitInvitation } from '../api'; import { arrayToString } from './utils'; import { Visitor } from '../model/visitor'; import { FormattedMessage, useIntl } from 'react-intl'; @@ -51,32 +51,53 @@ const RegForm = ({ history }: any) => { const { id } = useParams(); const intl = useIntl(); const [visitorCount, setVisitorCount] = useState(0); - const [isModalVisible, setIsModalVisible] = useState(false); + const [isSubmitModalVisible, setIsSubmitModalVisible] = useState(false); + const [isDeclineModalVisible, setIsDeclineModalVisible] = useState(false); + const [isDeclined, setIsDeclined] = useState(false); + + var decodedInvitationId = atob(id); const onSubmit = (values: FormValues) => { + let responseCode: string = ''; + values.visitors = values.visitors ?? []; + values.visitors.map((visitor) => { addVisitor({ ...visitor, allergies: visitor.allergies ? arrayToString(visitor.allergies) : '', preferences: visitor.preferences ?? '', welcomeDrink: visitor.welcomeDrink ?? '', - invitationId: (visitor.invitationId = atob(id)), - }).then((res) => - res === 'permission-denied' - ? showError() - : history.push('/confirmation') - ); + invitationId: (visitor.invitationId = decodedInvitationId), + }).then((res) => (responseCode = res)); }); + + submitInvitation(decodedInvitationId).then((res) => (responseCode = res)); + + responseCode !== 'success' ? showError() : history.push('/confirmation'); }; - const onOk = () => { + const onDecline = () => { + let responseCode: string = ''; + submitInvitation(decodedInvitationId).then((res) => (responseCode = res)); + responseCode !== 'success' ? showError() : history.push('/confirmation'); + }; + + const onSubmitOk = () => { form.submit(); - - setIsModalVisible(false); + setIsSubmitModalVisible(false); }; - const onCancel = () => { - setIsModalVisible(false); + const onSubmitCancel = () => { + setIsSubmitModalVisible(false); + }; + + const onDeclineOk = () => { + form.submit(); + setIsDeclineModalVisible(false); + }; + + const onDeclineCancel = () => { + setIsDeclineModalVisible(false); }; const showError = () => { @@ -95,7 +116,7 @@ const RegForm = ({ history }: any) => {
@@ -147,8 +168,9 @@ const RegForm = ({ history }: any) => { id: 'registration.form.preferences', })} fieldKey={[field.fieldKey, 'preferences']} + initialValue='everything' > - + {