feat: Messagerie WIP [#17]

This commit is contained in:
Luc SORIGNET
2025-05-11 14:02:04 +02:00
parent c6d75281a1
commit 23a593dbc7
28 changed files with 1177 additions and 391 deletions

View File

@ -4,6 +4,7 @@ import Tab from '@/components/Tab';
import TabContent from '@/components/TabContent';
import Button from '@/components/Button';
import InputText from '@/components/InputText';
import CheckBox from '@/components/CheckBox'; // Import du composant CheckBox
import logger from '@/utils/logger';
import {
fetchSmtpSettings,
@ -24,7 +25,6 @@ export default function SettingsPage() {
const [smtpPassword, setSmtpPassword] = useState('');
const [useTls, setUseTls] = useState(true);
const [useSsl, setUseSsl] = useState(false);
const [statusMessage, setStatusMessage] = useState('');
const { selectedEstablishmentId } = useEstablishment();
const csrfToken = useCsrfToken(); // Récupération du csrfToken
const { showNotification } = useNotification();
@ -35,7 +35,7 @@ export default function SettingsPage() {
// Charger les paramètres SMTP existants
useEffect(() => {
if (activeTab === 'smtp') {
fetchSmtpSettings(csrfToken) // Passer le csrfToken ici
fetchSmtpSettings(csrfToken, selectedEstablishmentId) // Passer le csrfToken ici
.then((data) => {
setSmtpServer(data.smtp_server || '');
setSmtpPort(data.smtp_port || '');
@ -46,7 +46,11 @@ export default function SettingsPage() {
})
.catch((error) => {
logger.error('Erreur lors du chargement des paramètres SMTP:', error);
setStatusMessage('Erreur lors du chargement des paramètres SMTP.');
showNotification(
'Erreur lors du chargement des paramètres SMTP.',
'error',
'Erreur'
);
});
}
}, [activeTab, csrfToken]); // Ajouter csrfToken comme dépendance
@ -113,7 +117,11 @@ export default function SettingsPage() {
editSmtpSettings(smtpData, csrfToken) // Passer le csrfToken ici
.then(() => {
setStatusMessage('Paramètres SMTP mis à jour avec succès.');
showNotification(
'Paramètres SMTP mis à jour avec succès.',
'success',
'Succès'
);
logger.debug('SMTP Settings Updated:', smtpData);
})
.catch((error) => {
@ -121,7 +129,11 @@ export default function SettingsPage() {
'Erreur lors de la mise à jour des paramètres SMTP:',
error
);
setStatusMessage('Erreur lors de la mise à jour des paramètres SMTP.');
showNotification(
'Erreur lors de la mise à jour des paramètres SMTP.',
'error',
'Erreur'
);
});
};
@ -164,48 +176,54 @@ export default function SettingsPage() {
</TabContent>
<TabContent isActive={activeTab === 'smtp'}>
<form onSubmit={handleSmtpSubmit}>
<InputText
label="Serveur SMTP"
value={smtpServer}
onChange={handleSmtpServerChange}
/>
<InputText
label="Port SMTP"
value={smtpPort}
onChange={handleSmtpPortChange}
/>
<InputText
label="Utilisateur SMTP"
value={smtpUser}
onChange={handleSmtpUserChange}
/>
<InputText
label="Mot de passe SMTP"
type="password"
value={smtpPassword}
onChange={handleSmtpPasswordChange}
/>
<div className="flex items-center space-x-4">
<label>
<input
type="checkbox"
checked={useTls}
onChange={handleUseTlsChange}
/>
Utiliser TLS
</label>
<label>
<input
type="checkbox"
checked={useSsl}
onChange={handleUseSslChange}
/>
Utiliser SSL
</label>
<div className="grid grid-cols-2 gap-4">
<InputText
label="Serveur SMTP"
value={smtpServer}
onChange={handleSmtpServerChange}
/>
<InputText
label="Port SMTP"
value={smtpPort}
onChange={handleSmtpPortChange}
/>
<InputText
label="Utilisateur SMTP"
value={smtpUser}
onChange={handleSmtpUserChange}
/>
<InputText
label="Mot de passe SMTP"
type="password"
value={smtpPassword}
onChange={handleSmtpPasswordChange}
/>
</div>
<Button type="submit" primary text="Mettre à jour"></Button>
<div className="mt-6 border-t pt-4">
<div className="flex items-center space-x-4">
<CheckBox
item={{ id: 'useTls' }}
formData={{ useTls }}
handleChange={() => setUseTls((prev) => !prev)} // Inverser la valeur booléenne
fieldName="useTls"
itemLabelFunc={() => 'Utiliser TLS'}
/>
<CheckBox
item={{ id: 'useSsl' }}
formData={{ useSsl }}
handleChange={() => setUseSsl((prev) => !prev)} // Inverser la valeur booléenne
fieldName="useSsl"
itemLabelFunc={() => 'Utiliser SSL'}
/>
</div>
</div>
<Button
type="submit"
primary
text="Mettre à jour"
className="mt-6"
></Button>
</form>
{statusMessage && <p className="mt-4 text-sm">{statusMessage}</p>}
</TabContent>
</div>
</div>