-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnewsletter-page.js
More file actions
1 lines (1 loc) · 1.83 KB
/
Copy pathnewsletter-page.js
File metadata and controls
1 lines (1 loc) · 1.83 KB
1
async function loadNewsletters(){const t=document.getElementById("newsletters");try{const s=await fetch("newsletters/list.json");if(!s.ok){t.innerHTML='<p class="error">No newsletters yet.</p>';return}const e=await s.json();if(e.length===0){t.innerHTML='<p class="error">No newsletters yet.</p>';return}t.innerHTML="";for(const r of e){const n=await(await fetch("newsletters/"+r.filename)).json(),a=document.createElement("div");a.className="newsletter-entry",a.innerHTML="<h2>"+esc(n.subject)+'</h2><div class="newsletter-date">'+esc(n.date_display)+'</div><div class="newsletter-body">'+esc(n.body)+"</div>",t.appendChild(a)}}catch{t.innerHTML='<p class="error">Failed to load newsletters.</p>'}}function esc(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}document.getElementById("info-icon").addEventListener("click",function(){var t=document.getElementById("info-dropdown");t.style.display=t.style.display==="none"?"block":"none"}),document.getElementById("sub-form").addEventListener("submit",async function(t){t.preventDefault();const s=document.getElementById("sub-email").value.trim(),e=document.getElementById("sub-msg");if(!s){e.className="sub-msg error",e.textContent="Please enter your email.";return}e.textContent="Subscribing...",e.className="sub-msg";try{const r=window.getRecaptchaToken?await window.getRecaptchaToken("newsletter_subscribe"):null,n=await(await fetch("/api/newsletter/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:s,recaptchaToken:r})})).json();n.success?(e.className="sub-msg success",e.textContent="Subscribed! Check your inbox for confirmation."):(e.className="sub-msg error",e.textContent=n.message||n.error||"Failed to subscribe.")}catch{e.className="sub-msg error",e.textContent="Network error. Try again."}}),loadNewsletters();