From 4bc7ce5ce79e074e173a68325291375e751639c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Demenech?= Date: Fri, 18 Aug 2023 09:41:31 -0300 Subject: [PATCH] [site,newsletter][s]: fix hero newsletter form (broken after Brevo update) --- site/components/Hero.tsx | 25 -------------- site/components/NewsletterForm.tsx | 52 ++++++++++++------------------ site/lib/loadNewsletterScripts.ts | 45 ++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 56 deletions(-) create mode 100644 site/lib/loadNewsletterScripts.ts diff --git a/site/components/Hero.tsx b/site/components/Hero.tsx index 5839ee5c..f34b3b60 100644 --- a/site/components/Hero.tsx +++ b/site/components/Hero.tsx @@ -3,31 +3,6 @@ import ButtonLink from './ButtonLink'; import NewsletterForm from './NewsletterForm'; import Image from 'next/image'; import DatahubExampleImg from '@/public/images/showcases/datahub.webp'; - -const codeLanguage = 'javascript'; -const code = `export default { - strategy: 'predictive', - engine: { - cpus: 12, - backups: ['./storage/cache.wtf'], - }, -}`; - -const tabs = [ - { name: 'cache-advance.config.js', isActive: true }, - { name: 'package.json', isActive: false }, -]; - -function TrafficLightsIcon(props) { - return ( - - ); -} - /* eslint jsx-a11y/label-has-associated-control: off */ export function Hero() { const el = useRef(null); diff --git a/site/components/NewsletterForm.tsx b/site/components/NewsletterForm.tsx index bc6940e9..c3974a1c 100644 --- a/site/components/NewsletterForm.tsx +++ b/site/components/NewsletterForm.tsx @@ -1,6 +1,27 @@ +import { loadScripts } from '@/lib/loadNewsletterScripts'; import Script from 'next/script'; +import { useEffect } from 'react'; export default function NewsletterForm() { + useEffect(() => { + /* + * The newsletter scripts MUST be loaded after + * the document is loaded, as they depend on + * the presence of some elements + * + */ + if (document.readyState === 'complete') { + const { resetElements } = loadScripts(); + + return () => { + resetElements(); + }; + } else { + window.addEventListener('load', loadScripts); + return () => window.removeEventListener('load', loadScripts); + } + }, []); + return (
-