import React, { useEffect, useState } from "react"; import { useIntl } from "react-intl"; import Input from "./components/Input"; import { Button } from "./components/Button"; import { useQuery } from "@tanstack/react-query"; import { getBotByApiKey, getConfigs as wpGetConfigs, setConfigs as wpSetConfigs, updateConfigsMeta as wpUpdateConfigsMeta, } from "./services/wordpress-api/shopinzen-integrator.service"; import { toast } from "react-toastify"; import { SwitchExample } from "./components/Switch"; import "../../index.css"; import "../../tailwind.css"; import "../register/register.css"; import { Loader } from "./components/Loader"; import { window_SHOPINZEN_INTEGRATOR_object } from "@src/dev-env"; const apiKeySample: any = ""; let tempPluginsExistingData: any = null; const Home: React.FC = () => { const intl = useIntl(); return ( <> {/* Hero Section - Nouveau Design (identique à register) */}

{intl.formatMessage({ defaultMessage: "100 % FREEMIUM – COMMENCEZ SANS PAYER", id: "hiPs8R", })}

{intl.formatMessage({ defaultMessage: "Créez votre chatbot IA personnalisé pour votre site en quelques clics", id: "KEHqE0", })}

{intl.formatMessage({ defaultMessage: "ShopinZen rend votre site vivant : un chatbot intelligent qui guide vos visiteurs, booste vos conversions et révolutionne leur expérience, sans aucune ligne de code.", id: "aSMbeE", })}

{intl.formatMessage({ defaultMessage: "Démarrer l'essai gratuit", id: "YDSE04", })} {intl.formatMessage({ defaultMessage: "Essayer la démo", id: "q2E2cb", })}
); }; const InputSection: React.FC = () => { const intl = useIntl(); const [apiKey, setApiKey] = useState(apiKeySample); const [isLoadingPluginsExistingData, setIsLoadingPluginsExistingData] = useState(false); const [pluginsExistingData, setPluginsExistingData] = useState(null); const [newBot, setNewBot] = useState(null); const [showApiKeyForm, setShowApiKeyForm] = useState(false); const onApiKeyInputSubmit = () => { refecthGetBotByApiKey(); if (!apiKey) return; }; const getConfigs = async () => { setIsLoadingPluginsExistingData(true); await wpGetConfigs() .then((res: any) => { setIsLoadingPluginsExistingData(false); if (res && res.data !== "") { setPluginsExistingData(res.data); setShowApiKeyForm(false); return res.data; } setShowApiKeyForm(true); return null; }) .catch(() => { setIsLoadingPluginsExistingData(false); }); }; const { data, isFetching: isCheckingApiKey, error: error_apiKey, refetch: refecthGetBotByApiKey, }: any = useQuery(["bot", { apiKey }], getBotByApiKey as any, { enabled: false, retry: false, }); useEffect(() => { // eslint-disable-next-line @typescript-eslint/no-floating-promises getConfigs(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [(window as any).location]); useEffect(() => { if (error_apiKey) { toast.error(error_apiKey.message, { hideProgressBar: true, position: "bottom-right", }); } }, [error_apiKey]); useEffect(() => { if (data) { setShowApiKeyForm(false); setNewBot(data?.data); } }, [data]); useEffect(() => { setShowApiKeyForm(!pluginsExistingData); }, [pluginsExistingData]); return (
{isLoadingPluginsExistingData && (

{intl.formatMessage({ defaultMessage: "Chargement en cours, veuillez patienter...", id: "Degbc8", })}

)} {!isLoadingPluginsExistingData && !showApiKeyForm && (pluginsExistingData || newBot) && ( <>
setPluginsExistingData(data)} public_key={apiKey} newBot={newBot} pluginsExistingData={pluginsExistingData} /> )} {!isLoadingPluginsExistingData && showApiKeyForm && !pluginsExistingData && (
setApiKey(e.target.value)} label={intl.formatMessage({ defaultMessage: "Entrez votre clé API pour ajouter ShopinZen", id: "AX3zeH", })} variant="outline" value={apiKey} className="mb-5" disabled={isCheckingApiKey} />
)}
); }; const DisplayWidgetSwitch: React.FC = ({ checked: isChecked, pluginData, onChange = () => {}, }) => { const intl = useIntl(); const [checked, setChecked] = useState(false); const [isLoading, setIsLoading] = useState(false); const onDisplaySwitchChange = (value: any) => { if (isLoading) return; setIsLoading(true); const loadingToast = toast.info( intl.formatMessage({ defaultMessage: "Veuillez patienter", id: "TKPr1i", }), { isLoading: true, position: "bottom-right", closeButton: false, closeOnClick: false, toastId: "loadingToast", }, ); wpUpdateConfigsMeta({ ...(pluginData?.meta || {}), canDisplayWidget: value, }) .then(() => { setChecked(value); onChange(value); toast.update(loadingToast, { render: intl.formatMessage({ defaultMessage: "Mise à jour effectuée !", id: "znKChk", }), isLoading: false, type: "success", autoClose: null, closeOnClick: true, }); setIsLoading(false); }) .catch((error: any) => { toast.update(loadingToast, { render: error.message || intl.formatMessage({ defaultMessage: "Une erreur est survenue", id: "uM26tE", }), isLoading: false, type: "error", autoClose: null, closeOnClick: true, }); setIsLoading(false); }); }; useEffect(() => { setChecked(isChecked); }, [isChecked]); return (
); }; const BotSection: React.FC = ({ newBot, public_key, pluginsExistingData, setPluginConfigsCallback = () => {}, }) => { const intl = useIntl(); const [isActivated, setIsActivated] = useState(false); const [isLoading, setIsLoading] = useState(false); const [pluginConfigs, setPluginConfigs] = useState(null); const api_setPluginConfigs = (configs: any) => { if (!configs) return; setIsLoading(true); return wpSetConfigs(configs) .then((res: any) => { setIsLoading(false); setIsActivated(true); if (res && res.data !== "") { toast.success( intl.formatMessage({ defaultMessage: "Activation réussie !", id: "R+MWXj", }), { hideProgressBar: true, position: "bottom-right", }, ); setPluginConfigsCallback(res.data); } return res?.data; }) .catch((error: any) => { setIsLoading(false); toast.error( error.message || error.response?.data?.message || intl.formatMessage({ defaultMessage: "Une erreur est survenue", id: "uM26tE", }), { hideProgressBar: true, position: "bottom-right", }, ); }); }; const bot = newBot || pluginsExistingData?.chatbot; useEffect(() => { if (bot) { setPluginConfigs({ public_key, chatbot: { ...bot }, }); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [bot]); return (
{bot && ( <>

{intl.formatMessage({ defaultMessage: "Informations sur le bot", id: "QhuUIO", })}

{intl.formatMessage({ defaultMessage: "Nom", id: "h4Insz" })}: {" "} {bot.botName}

{!isActivated && newBot && ( )} )}
); }; export default Home;