import { useState, useEffect } from "react"; import ReactLoading from "react-loading"; import Formsy from "formsy-react"; import { API } from "aws-amplify"; import OCVForm from "./OCVForm"; const axios = require("axios"); export const FormWrapper = ({ viewData, classes, 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 = () => { //setCanSubmit(false); setState({ ...state, canSubmit: false }); }; const enableButton = () => { //setCanSubmit(true); setState({ ...state, canSubmit: true }); }; const submit = (model) => { setIsSubmitting(true); API.post("ocvapps", "/form/submission", { body: { appID: formData.appID, data: { formID: 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(() => { async function getFormData() { try { const response = await axios.get(link); setFormData(response?.data?.data); } catch (error) { console.error(error); } } getFormData(); }, [link]); if (formData === null) { return ( <div className="OCVFormDiv"> <ReactLoading className="loading-centered" type={"spinningBubbles"} color={"#105c9c"} height={"10%"} width={"10%"} /> </div> ); } else { 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} classes={classes} viewData={viewData} state={state} setState={setState} activePage={activePage} setActivePage={setActivePage} /> </Formsy> ); } };