import { useState, useEffect, useRef, useCallback } from 'react';
import { api } from '../../api.js';
import { useAuth } from '../../context/AuthContext.jsx';
/* ── Icône œil (show/hide password) ───────────────────────────────────── */
function IconEye({ open }) {
return open
?
: ;
}
/* ── Toggle switch ─────────────────────────────────────────────────────── */
function Toggle({ checked, onChange, id }) {
return (
);
}
/* ── Ligne de paramètre ────────────────────────────────────────────────── */
function SettingRow({ label, description, children }) {
return (
SMTP
{saveStatus === 'saving' && (
Sauvegarde…
)}
{saveStatus === 'saved' && (
✓ Sauvegardé
)}
{saveStatus === 'error' && (
Erreur
)}
Configuration du serveur de messagerie sortant. Utilisée pour les alertes, rapports et réinitialisation de mot de passe.
{result && (
{result.msg}
)}
{/* Activer */}
set('enabled', v)} />
{/* Hôte */}
set('host', e.target.value)}
placeholder="smtp.example.com"
style={{ width: 280 }}
/>
{/* Port */}
set('port', parseInt(e.target.value, 10) || 587)}
min={1}
max={65535}
style={{ width: 120 }}
/>
{/* Connexion sécurisée (TLS) */}
set('secure', v)} />
{/* Courriel */}
set('email', e.target.value)}
placeholder="no-reply@example.com"
style={{ width: 280 }}
/>
{/* Nom d'utilisateur */}
set('username', e.target.value)}
placeholder="user@example.com"
autoComplete="off"
style={{ width: 280 }}
/>
{/* Mot de passe */}
{ passwordTyped.current = true; set('password', e.target.value); }}
placeholder={hasPassword ? '••••••••' : 'Mot de passe'}
autoComplete="new-password"
style={{ width: '100%', paddingRight: 36 }}
/>
{/* Certificats non autorisés */}
set('allowUnauth', v)} />
{/* Section email de test */}
Envoyer un email de test
Vérifiez que votre configuration SMTP fonctionne en envoyant un email de test. Sauvegardez d'abord vos paramètres.
{testResult && (
{testResult.msg}
)}
setTestEmail(e.target.value)}
placeholder="destinataire@example.com"
style={{ flex: 1, maxWidth: 320 }}
onKeyDown={e => e.key === 'Enter' && handleTest()}
/>
);
}