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 ( <>
{__("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")}
}