import {useState, useEffect} from "@wordpress/element"; import { __ } from '@wordpress/i18n'; import InstallPlugin from "./InstallPlugin"; import useOnboardingData from "./OnboardingData"; import Icon from "../utils/Icon"; import useFields from "../Settings/Fields/FieldsData"; const Onboarding = () => { const { email, setEmail, setIncludeTips, includeTips, sendTestEmail, saveEmail, setSendTestEmail, plugins, loaded, isUpgrade, processing, dismissModal, modalVisible, getRecommendedPluginsStatus} = useOnboardingData(); const [modalStep, setModalStep] = useState(0); const {updateField, getField} = useFields(); const [waiting, setWaiting] = useState(true); const [nextDisabled, setNextDisabled] = useState(true); const startTour = (e) => { e.preventDefault(); window.location.href = window.location.href.replace('onboarding', 'tour'); } const steps = [ 'plugins', 'email', ]; const isValidEmail = (email) => { if (email.length===0) return true; const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return regex.test(email); } const goToWizard = async (e) => { e.preventDefault(); await saveEmail(); if ( isValidEmail(email) && email.length>0 ){ updateField('notifications_email_address', email); updateField('send_notifications_email', true); } dismissModal(); window.location.hash = '#wizard'; } // Prefill administrator e-mail address useEffect(() => { if (!email) { const defaultEmail = getField('notifications_email_address').default; if (defaultEmail) { setEmail(defaultEmail); } } }, []); useEffect ( () => { if (!loaded) { getRecommendedPluginsStatus(); } },[loaded]); useEffect ( () => { if (steps[modalStep] === 'plugins') { setNextDisabled(true); if (!waiting) { setNextDisabled(false); } } if (steps[modalStep] === 'email') { setNextDisabled(true); if ( isValidEmail(email) ) { setNextDisabled(false); } } },[email, modalStep, waiting]); useEffect ( () => { //set an interval, to set waiting to false after 1 second. const interval = setInterval(() => { setWaiting(false); }, 2000); return () => clearInterval(interval); },[]); if (!modalVisible) { return null; } let emailClass = isValidEmail(email) ? 'cmplz-valid' : 'cmplz-invalid'; let processingClass = steps[modalStep] === 'email' && processing ? 'cmplz-processing' : ''; return ( <>
 
Complianz logo
{steps[modalStep] === 'plugins' &&

{__("Take a quick tour to familiarize yourself with Complianz, or discover on your own pace. If you have any questions, let us know, but for now: ","complianz-gdpr")}  {__("Meet Complianz 7.0","complianz-gdpr")}

} {steps[modalStep] === 'email' &&

{__("We use email notifications to explain important updates in your plugin settings. Add your email address below.","complianz-gdpr")}

}
{steps[modalStep] === 'plugins' && <> {plugins.map((plugin, i) => )}
{ ( waiting || !loaded ) && __("Upgrading", "complianz-gdpr") } { !waiting && loaded && <> { isUpgrade && __("Thanks for updating!", "complianz-gdpr")} { !isUpgrade && __("Thanks for installing!", "complianz-gdpr")} }
} {steps[modalStep] === 'email' && <>
setEmail(e.target.value)} />
}
{modalStep>0 && setModalStep(modalStep-1)}>{__("Previous","complianz-gdpr")}} {modalStep<(steps.length-1) && } {modalStep===(steps.length-1) && goToWizard(e)} className="button button-primary" >{__("Start wizard", "complianz-gdpr")}} {modalStep===(steps.length-1) && startTour(e)}>{__("Take a tour","complianz-gdpr")}}
) } export default Onboarding;