UNPKG

@armada-inc/gatsby-wordpress-theme-libre

Version:

A Gatsby theme plugin for creating blogs from headless WordPress CMS.

38 lines (32 loc) 1.17 kB
import { useState, useContext } from "react"; import { ArmadaFormsContext } from "../context/form-context"; export const useForm = formKey => { const [submitting, setSubmitting] = useState(false); const [succeeded, setSucceeded] = useState(false); const [errors, setErrors] = useState([]); const { client } = useContext(ArmadaFormsContext); const handleSubmit = async data => { setSubmitting(true); try { let formHeaders = new Headers(); formHeaders.append("Content-Type", "application/json"); const response = await fetch(`${client}/${formKey}`, { method: "POST", mode: "cors", cache: "no-cache", credentials: "same-origin", body: JSON.stringify(data), headers: formHeaders }); if (!response.ok) { setErrors([{ error: `error occured submitting request: ${formKey}` }]); } else { setSubmitting(false); setSucceeded(true); } } catch (error) { setErrors([{ error: `error occured submitting request: ${formKey}` }]); } }; return [{ submitting, errors, succeeded, handleSubmit }]; };