import React, { FC, useState, useEffect } from "react"; import Title from "../../core/Title"; import ReactTooltip from "react-tooltip"; import { toBoolean, isGravityFormsInstalled, isGravityFormsLoaded, gravityECTPlacement, gravityDisableIds, getAjaxNonce, getNonce, } from "../../Helpers"; import Icons from "../../icons"; import GForm from "../../images/gravityforms.png"; type Props = { store: any; setStore: any; }; const GravityForms: FC = ({ store, setStore }) => { const [installed, setInstall] = useState(isGravityFormsInstalled()); const [placement, setPlacement] = useState(gravityECTPlacement()); const [ids, setIds] = useState(gravityDisableIds()); const [loaded, setLoad] = useState(isGravityFormsLoaded()); const [loader, setLoader] = useState(false); const [collapse, setCollapse] = useState( toBoolean(localStorage.getItem("ect_gravityforms_integration_collapse")) ); const handleCollapse = (value) => { setCollapse(value); localStorage.setItem("ect_gravityforms_integration_collapse", value); }; const handleStatus = (e): void => { setStore({ ...store, integrations: { ...store.integrations, [e.target.name]: e.target.checked, }, }); }; const handlePluginInstall = (e) => { const link = "https://www.gravityforms.com/"; window.open(link, "_blank"); wp.ajax.send("wp_ajax_install_plugin", { data: { _ajax_nonce: getAjaxNonce(), slug: "gravityforms", }, success() { setLoader(false); setInstall(true); }, error() { setInstall(false); }, }); }; const handlePluginActive = (e) => { e.preventDefault(); setLoader(true); wp.ajax.send("active_plugin", { data: { nonce: getNonce(), slug: "gravityforms", }, success() { setLoader(false); setLoad(true); }, error() { setLoad(true); setLoader(false); }, }); }; const handleSelectChange = (e) => { setPlacement(e.target.value); localStorage.setItem("gravityformPlacement", e.target.value); wp.ajax.send("ect_placement", { data: { nonce: getNonce(), selected_option: e.target.value, form: "gravityforms", }, success(response) { console.log(response); }, error(err) { console.error(err); }, }); }; const handlegravityDisableIds = (e) => { setIds(e.target.value); localStorage.setItem("disabled_ids", e.target.value); wp.ajax.send("ect_disabled_ids", { data: { nonce: getNonce(), disabled_ids: e.target.value, form: "gravityforms", }, success(response) { console.log(response); }, error(err) { console.error(err); }, }); }; useEffect(() => { const storedOption = localStorage.getItem("gravityformPlacement"); const disabledIds = localStorage.getItem("disabled_ids"); if (storedOption) { setPlacement(storedOption); } if (disabledIds) { setIds(disabledIds); } }, [placement, ids]); return ( <>
Gravity Form Logo
<h3>Gravity Forms</h3> {!installed && (
{Icons.info_icon} Please get the Gravity Form first!
)} {installed && !loaded && (
{Icons.info_icon} Please activate Gravity Form first!
)} {installed && loaded && toBoolean( store?.integrations?.gravityforms && store.integrations.gravityforms.toString() ) && ( <> {collapse ? ( <> ) : null} {collapse ? ( ) : ( )} )}
{installed && loaded && ( <> {" "} )} {!installed && (
handlePluginInstall(e)}>
)} {installed && !loaded && (
{loader ? ( ) : null} {installed && !loaded && !loader && ( )}
)}
); }; export default GravityForms;