import { useEffect, useState } from 'react'; import { Save, Send } from 'lucide-react'; import { useUi } from '../../context/ui-context.jsx'; import { useAsync, useAction } from '../../hooks/useAsync.js'; import { getSmtpConfig, updateSmtpConfig, testSmtpConfig } from '../../services/settings.js'; import { Field, FieldRow } from '../../components/Field.jsx'; import { Button } from '../../components/Button.jsx'; import { InfoBar } from '../../components/InfoBar.jsx'; import { PasswordInput } from '../../components/PasswordInput.jsx'; export default function SmtpSettingsPanel() { const { t, pushToast } = useUi(); const runAction = useAction(); const { data: config, reload } = useAsync(getSmtpConfig, []); const [form, setForm] = useState({ host: '', port: 587, user: '', from: '', pass: '' }); const [testTo, setTestTo] = useState(''); const [testing, setTesting] = useState(false); const [testResult, setTestResult] = useState(null); // { ok: bool, message: string } useEffect(() => { if (config) setForm({ host: config.host, port: config.port, user: config.user, from: config.from, pass: '' }); }, [config]); async function save() { await runAction(async () => { await updateSmtpConfig(form); await reload(); setForm((f) => ({ ...f, pass: '' })); pushToast({ tone: 'success', message: t('common_saved') }); }); } async function sendTest() { setTestResult(null); setTesting(true); try { await testSmtpConfig({ ...form, to: testTo }); setTestResult({ ok: true, message: `${t('smtp_test_success')} ${testTo}` }); } catch (err) { setTestResult({ ok: false, message: err.message }); } finally { setTesting(false); } } if (!config) return
{t('common_loading')}
; const canTest = form.host && form.user && testTo && !testing; return (
{!config.configured && {t('smtp_not_configured')}} setForm((f) => ({ ...f, host: e.target.value }))} placeholder="192.168.222.10" /> setForm((f) => ({ ...f, port: Number(e.target.value) }))} /> setForm((f) => ({ ...f, user: e.target.value }))} placeholder="project@linkedcorp.net" /> setForm((f) => ({ ...f, from: e.target.value }))} placeholder="project@linkedcorp.net" /> setForm((f) => ({ ...f, pass: e.target.value }))} />

{t('smtp_test_title')}

{t('smtp_test_hint')}
setTestTo(e.target.value)} placeholder="tucorreo@linkedcorp.net" /> {testResult && ( {testResult.message} )}
); }