import { useState, useEffect } from 'react'; import { X, Send } from 'lucide-react'; import type { Settings } from '../types'; import { updateSettings, testTelegram } from '../api/client'; interface Props { settings: Settings | null; onClose: () => void; onSaved: (s: Settings) => void; } export default function SettingsModal({ settings, onClose, onSaved }: Props) { const [token, setToken] = useState(''); const [chatId, setChatId] = useState(''); const [saving, setSaving] = useState(false); const [testing, setTesting] = useState(false); const [error, setError] = useState(''); const [testMsg, setTestMsg] = useState(''); useEffect(() => { if (settings) { setToken(settings.telegram_bot_token ?? ''); setChatId(settings.telegram_chat_id ?? ''); } }, [settings]); const handleSave = async (e: React.FormEvent) => { e.preventDefault(); setError(''); setTestMsg(''); setSaving(true); try { const updated = await updateSettings({ telegram_bot_token: token.trim(), telegram_chat_id: chatId.trim(), }); onSaved(updated); } catch (e: unknown) { setError(e instanceof Error ? e.message : 'Failed to save settings'); } finally { setSaving(false); } }; const handleTest = async () => { setTestMsg(''); setError(''); setTesting(true); try { // Save first so the test uses current values await updateSettings({ telegram_bot_token: token.trim(), telegram_chat_id: chatId.trim(), }); const result = await testTelegram(); if (result.success) { setTestMsg('✓ Test message sent! Check your Telegram.'); } else { setError(result.error ?? 'Test failed — check your token and chat ID.'); } } catch (e: unknown) { setError(e instanceof Error ? e.message : 'Test failed'); } finally { setTesting(false); } }; return (