/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { useState, useEffect } from "react"; import ReactLoading from "react-loading"; import Formsy from "formsy-react"; import { Amplify, API } from "aws-amplify"; import OCVForm from "./OCVForm"; export default function FormWrapper({ viewData, formID, //link, headerText, submissionText, anchorID, }) { const [activePage, setActivePage] = useState(0); const [state, setState] = useState({}); const [formData, setFormData] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const [isSubmitted, setIsSubmitted] = useState(false); const disableButton = () => { setState({ ...state, canSubmit: false }); }; const enableButton = () => { setState({ ...state, canSubmit: true }); }; Amplify.configure({ API: { endpoints: [ { name: "ocvapps", endpoint: "https://oc1rhn99vi.execute-api.us-east-1.amazonaws.com/beta", region: "us-east-1", }, ], }, }); const submit = (model) => { setIsSubmitting(true); API.post("ocvapps", "/form/submission", { body: { appID: formData.appID, data: { formID, formData: model, }, }, headers: { "x-api-key": "AJgsD4mQAY95dQiaJecac3WBvEFlqnvn3vAxI93f", "Content-Type": "application/json", }, }) .then((response) => { if (response?.response?.statusCode === 200) { setIsSubmitting(false); setIsSubmitted(true); } else { setIsSubmitting(false); setIsSubmitted(false); alert( "There has been a problem with your form submission. Contact the Web Administrator for help." ); } }) .catch((error) => { setIsSubmitting(false); setIsSubmitted(false); alert(error); }); }; // retrieve formData useEffect(() => { const form = { version: 3, images: 1, formManager: 0, title: "Multi Page Test", sendServer: 1, active: 1, autoLocation: 1, saveToGallery: 1, saveUserInfo: ["userName", "userEmail", "userPhone"], fromAddress: "noreply@myocv.com", subject: "Damage Report App submission", message: "A Damage Report has been submitted through the app.", emails: [ { email: "changeme@example.com", name: "changeme", }, ], inactiveMessage: "This form is currently inactive please check back later.", sections: [ [ { title: "Report Type", fields: [ { fieldID: "reportType", type: 4, optional: 0, subtype: 0, multi: 0, title: "Type", length: 0, elements: [ "Severe Weather", "Storm Damage", "Power Outage", "Other", ], }, { fieldID: "reportType", type: 9, optional: 0, subtype: 0, multi: 0, title: "Location", }, ], }, { title: "Personal Details", fields: [ { fieldID: "userName", type: 0, optional: 1, subtype: 0, multi: 0, title: "Name (optional)", length: 0, }, { fieldID: "userEmail", type: 0, optional: 1, subtype: 1, multi: 0, title: "Email Address (optional)", length: 0, }, { fieldID: "userPhone", type: 0, optional: 1, subtype: 3, multi: 0, title: "Phone Number (optional)", length: 0, }, ], }, ], [ { title: "Report Details", fields: [ { fieldID: "address", type: 0, optional: 0, subtype: 0, multi: 0, title: "Address", length: 0, }, { fieldID: "city", type: 0, optional: 0, subtype: 0, multi: 0, title: "City", length: 0, }, { fieldID: "state", type: 0, optional: 0, subtype: 0, multi: 0, title: "State", length: 0, }, { fieldID: "zipCode", type: 0, optional: 0, subtype: 7, multi: 0, title: "ZIP Code", length: 0, }, { fieldID: "dateTimeOfIncident", type: 7, optional: 0, subtype: 0, multi: 0, title: "Date/Time of Incident", length: 0, }, { length: 0, fieldID: "additionalInfo", type: 1, optional: 1, subtype: 0, multi: 0, title: "Additional Information (optional)", }, ], }, ], ], alert911: 0, alertText: "", leaderText: "", footerText: "", appID: "a12722222", }; async function getFormData() { try { //const response = await axios.get(link); setFormData(form); } catch (error) { console.error(error); } } getFormData(); }, []); if (formData === null) { return ( <div className="OCVFormDiv"> <ReactLoading className="loading-centered" type="spinningBubbles" color="#105c9c" height="10%" width="10%" /> </div> ); } return ( <Formsy onValidSubmit={submit} onValid={enableButton} onInvalid={disableButton} > <OCVForm isSubmitted={isSubmitted} isSubmitting={isSubmitting} disableButton={disableButton} enableButton={enableButton} formData={formData} formID={formID} headerText={headerText} submissionText={submissionText} anchorID={anchorID} viewData={viewData} state={state} setState={setState} activePage={activePage} setActivePage={setActivePage} /> </Formsy> ); }