/* global React, Container, Section, SectionIdx, Button, useLang, t, I18nStore */
// ╔══ ОТПРАВКА ЗАЯВОК ═══════════════════════════════════════════╗
// Токен бота больше НЕ хранится здесь. Форма шлёт заявку на ваш прокси
// (Cloudflare Worker), а уже он — секретно — пересылает её в Telegram.
//
// Вставьте сюда адрес воркера после деплоя (см. telegram-proxy/worker.js):
// например 'https://ea-soft-leads.ВАШ-САБДОМЕН.workers.dev'
// Пока пусто — форма работает в демо-режиме (показывает «спасибо», но не шлёт).
// ╚══════════════════════════════════════════════════════════════╝
const PROXY_URL = 'https://aged-cell-e04f.azat-massaurov.workers.dev/';
async function sendToTelegram(form) {
const payload = { ...form, lang: I18nStore.lang };
if (!PROXY_URL) {
console.warn('[Telegram] PROXY_URL не задан — демо-режим, заявка не отправлена:\n', payload);
await new Promise(r => setTimeout(r, 600));
return;
}
const res = await fetch(PROXY_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
});
const data = await res.json().catch(() => ({}));
if (!res.ok || !data.ok) throw new Error(data.error || ('HTTP ' + res.status));
}
function Contact() {
useLang();
const [status, setStatus] = React.useState('idle'); // idle | sending | sent | error
const [form, setForm] = React.useState({ name: '', phone: '', service: '', task: '' });
const update = (k) => (e) => setForm({ ...form, [k]: e.target.value });
const valid = form.name.trim().length > 0 && form.phone.trim().length > 0 && form.service.length > 0;
const services = t('contact.services');
const sent = status === 'sent';
const sending = status === 'sending';
const onSubmit = async (e) => {
e.preventDefault();
if (!valid || sending) return;
setStatus('sending');
try {
await sendToTelegram(form);
setStatus('sent');
} catch (err) {
console.error('[Telegram] Ошибка отправки:', err);
setStatus('error');
}
};
return (
{t('contact.lead')} {t('contact.sentText')} {t('contact.errText')}{t('contact.title')}
{t('contact.sentTitle')}
{t('contact.errTitle')}