// lib/api.ts // Общая логика отправки данных калькулятора на backend import { API_BASE_URL } from './config'; export interface SubmitResponse { success: boolean; error?: string; } /** * Отправляет данные калькулятора на backend * @param calculatorType - Тип калькулятора (например, 'soap') * @param chatId - ID чата Telegram * @param formData - Данные формы * @param photoFile - Файл фото (опционально) * @returns Promise с результатом отправки */ export async function submitCalculator( calculatorType: string, chatId: string, formData: Record, photoFile: File | null = null ): Promise { const data = new FormData(); data.append('chat_id', chatId); // Добавляем все поля формы for (const [key, value] of Object.entries(formData)) { data.append(key, value.toString()); } // Добавляем фото, если есть if (photoFile) { data.append('photo', photoFile); } try { const res = await fetch(`${API_BASE_URL}/api/submit/${calculatorType}`, { method: 'POST', body: data, }); if (res.ok) { return { success: true }; } else { const errorData = await res.json().catch(() => ({ error: await res.text() })); return { success: false, error: errorData.error || `Ошибка ${res.status}: ${res.statusText}`, }; } } catch (err) { return { success: false, error: err instanceof Error ? err.message : 'Ошибка сети при отправке расчёта', }; } }