diff --git a/app/src/routes/+page.svelte b/app/src/routes/+page.svelte index 9252a50..efc7083 100644 --- a/app/src/routes/+page.svelte +++ b/app/src/routes/+page.svelte @@ -44,20 +44,38 @@ let formDone = $state(false); let formError = $state(''); + let turnstileToken = $state(''); + function openModal(plan = '') { modalPlan = plan; formDone = false; formError = ''; + turnstileToken = ''; showModal = true; + setTimeout(() => { + const ts = (window as any).turnstile; + if (!ts) return; + const el = document.querySelector('.cf-turnstile'); + if (el && !el.hasChildNodes()) { + ts.render(el, { + sitekey: PUBLIC_TURNSTILE_SITE_KEY, + theme: 'light', + callback: (t: string) => { turnstileToken = t; } + }); + } + }, 80); } - function closeModal() { showModal = false; } + function closeModal() { + showModal = false; + (window as any).turnstile?.remove('.cf-turnstile'); + } async function submitForm() { if (!formName.trim() || !formEmail.trim()) { formError = 'Bitte Name und E-Mail ausfüllen.'; return; } formSending = true; formError = ''; try { - const token = (window as any).turnstile?.getResponse() ?? ''; + const token = turnstileToken; const res = await fetch('/api/contact', { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -426,28 +444,28 @@
{formError}
{/if}