From d3645ec1cb793e16ed14ce4a13df55de35486327 Mon Sep 17 00:00:00 2001 From: Manus Date: Thu, 15 Jan 2026 12:06:52 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20de=20l'erreur=20"Can?= =?UTF-8?q?not=20read=20properties=20of=20undefined=20(reading=20'replace'?= =?UTF-8?q?)"=20lors=20de=20l'envoi=20de=20test=20de=20rappel=20:=20-=20Aj?= =?UTF-8?q?out=20d'une=20v=C3=A9rification=20dans=20replaceEmailVariables?= =?UTF-8?q?=20pour=20g=C3=A9rer=20les=20templates=20undefined/null=20-=20A?= =?UTF-8?q?jout=20d'une=20v=C3=A9rification=20dans=20buildEmailHTML=20pour?= =?UTF-8?q?=20s'assurer=20que=20emailBody=20n'est=20jamais=20undefined=20-?= =?UTF-8?q?=20Ajout=20d'une=20v=C3=A9rification=20pour=20headerTitle=20ava?= =?UTF-8?q?nt=20d'appeler=20replaceEmailVariables=20-=20Protection=20contr?= =?UTF-8?q?e=20les=20valeurs=20null/undefined=20dans=20toutes=20les=20fonc?= =?UTF-8?q?tions=20de=20manipulation=20de=20templates=20-=20Mise=20=C3=A0?= =?UTF-8?q?=20jour=20du=20fichier=20todo.md=20pour=20marquer=20la=20t?= =?UTF-8?q?=C3=A2che=20comme=20termin=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/emailTemplateGenerator.ts | 6 +++--- server/emailTemplateUtils.ts | 5 +++++ todo.md | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/server/emailTemplateGenerator.ts b/server/emailTemplateGenerator.ts index 9143f92..42f405d 100644 --- a/server/emailTemplateGenerator.ts +++ b/server/emailTemplateGenerator.ts @@ -35,15 +35,15 @@ export async function generateEmailFromTemplate( */ function buildEmailHTML(template: EmailTemplate, content: string, variables?: EmailVariables): string { // Utiliser bodyContent si disponible, sinon utiliser content (legacy) - let emailBody = template.bodyContent || content; + let emailBody = template.bodyContent || content || ''; // Remplacer les variables si fournies - if (variables) { + if (variables && emailBody) { emailBody = replaceEmailVariables(emailBody, variables); // Remplacer aussi dans le titre et le pied de page template = { ...template, - headerTitle: replaceEmailVariables(template.headerTitle, variables), + headerTitle: template.headerTitle ? replaceEmailVariables(template.headerTitle, variables) : template.headerTitle, footerText: template.footerText ? replaceEmailVariables(template.footerText, variables) : template.footerText, }; } diff --git a/server/emailTemplateUtils.ts b/server/emailTemplateUtils.ts index ba6d593..b5ad696 100644 --- a/server/emailTemplateUtils.ts +++ b/server/emailTemplateUtils.ts @@ -26,6 +26,11 @@ export function replaceEmailVariables( template: string, variables: EmailVariables ): string { + // Vérifier que le template n'est pas undefined ou null + if (!template) { + return ''; + } + let result = template; // Remplacer chaque variable trouvée dans le template diff --git a/todo.md b/todo.md index b3436a8..2950d55 100644 --- a/todo.md +++ b/todo.md @@ -818,3 +818,4 @@ - [ ] Corriger les erreurs TypeScript dans les fonctions de gestion des présences - [ ] Corriger les erreurs TypeScript dans les fonctions de gestion des logs - [x] Corriger l'erreur de validation du type de rappel dans la procédure testerRappel (typeRappel invalide) +- [x] Corriger l'erreur "Cannot read properties of undefined (reading 'replace')" lors de l'envoi de test de rappel