From eb542f3d1de1878e9f52b946e0bce457ccbbb4fc Mon Sep 17 00:00:00 2001 From: 1AhmedYasser <26207361+1AhmedYasser@users.noreply.github.com> Date: Thu, 15 Jan 2026 00:17:30 +0200 Subject: [PATCH] chore(618): Added backoffice and general knowledge and validate --- GUI/src/components/Markdowify/index.tsx | 28 ++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/GUI/src/components/Markdowify/index.tsx b/GUI/src/components/Markdowify/index.tsx index c26d69bcb..578c94b68 100644 --- a/GUI/src/components/Markdowify/index.tsx +++ b/GUI/src/components/Markdowify/index.tsx @@ -42,6 +42,30 @@ const LinkPreview: React.FC<{ const hasSpecialFormat = (m: string) => m.includes('\n\n') && m.indexOf('.') > 0 && m.indexOf(':') > m.indexOf('.'); +function formatMessage(message?: string): string { + if (!message) return ''; + + const filteredMessage = message + .replaceAll(/\\?\$b\w*/g, '') + .replaceAll(/\\?\$v\w*/g, '') + .replaceAll(/\\?\$g\w*/g, ''); + + return filteredMessage + .replaceAll(/&#x([0-9A-Fa-f]+);/g, (_, hex: string) => String.fromCharCode(parseInt(hex, 16))) + .replaceAll(/(^|\n)(\d{4})\.\s/g, (match, prefix, year) => { + const remainingText = filteredMessage.substring(filteredMessage.indexOf(match) + match.length); + const sentenceEnd = remainingText.indexOf('\n\n'); + if (sentenceEnd !== -1) { + const currentSentence = remainingText.substring(0, sentenceEnd); + if (currentSentence.trim().endsWith(':')) { + return `${prefix}${year}. `; + } + } + return `${prefix}${year}\\. `; + }) + .replace(/(?<=\n)\d+\.\s/g, hasSpecialFormat(filteredMessage) ? '\n\n$&' : '$&'); +} + const Markdownify: React.FC = ({ message, sanitizeLinks = false }) => (
= ({ message, sanitizeLinks = fals disableParsingRawHTML: true, }} > - {message - ?.replaceAll(/&#x([0-9A-Fa-f]+);/g, (_, hex: string) => String.fromCodePoint(Number.parseInt(hex, 16))) - ?.replaceAll(/(?<=\n)\d+\.\s/g, hasSpecialFormat(message) ? '\n\n$&' : '$&') ?? ''} + {formatMessage(message)}
);