const config = window.__CONFIG__ || {}; const API_BASE = (config.API_BASE || '').replace(/\/$/, ''); const form = document.getElementById('subscribe-form'); const emailInput = document.getElementById('email'); const submitBtn = document.getElementById('submit-btn'); const toast = document.getElementById('toast'); if (!API_BASE) { toast.textContent = 'API_BASE не задан. Проверьте конфиг.'; toast.className = 'toast error'; submitBtn.disabled = true; } const showToast = (message, type) => { toast.textContent = message; toast.className = `toast ${type}`; }; const validateEmail = (value) => { return /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(value.trim()); }; form?.addEventListener('submit', async (event) => { event.preventDefault(); const email = emailInput.value.trim(); if (!validateEmail(email)) { showToast('Введите корректный email', 'error'); return; } submitBtn.disabled = true; showToast('Отправляем письмо…', ''); try { const response = await fetch(`${API_BASE}/subscribe`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email }) }); if (!response.ok) { const data = await response.json().catch(() => ({})); const error = data.error || 'Не удалось отправить запрос'; throw new Error(error); } showToast('Проверьте почту — ссылка уже отправлена.', 'success'); form.reset(); } catch (error) { console.error('[subscribe:error]', error); showToast(error.message || 'Ошибка отправки. Попробуйте позже.', 'error'); } finally { submitBtn.disabled = false; } });