From a49a3d89a4578f0dd6ef0f902dcb1e546370d50c Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Sat, 26 Apr 2025 03:15:18 -0700 Subject: [PATCH] [MIRROR] fix a rare chat crash (#10749) Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- tgui/packages/tgui-panel/chat/renderer.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tgui/packages/tgui-panel/chat/renderer.tsx b/tgui/packages/tgui-panel/chat/renderer.tsx index 9a66c6afa6..c67cd14e4e 100644 --- a/tgui/packages/tgui-panel/chat/renderer.tsx +++ b/tgui/packages/tgui-panel/chat/renderer.tsx @@ -360,18 +360,13 @@ class ChatRenderer { } blacklistRegexExpressions.push(expr); } else { - // Lazy init - if (!blacklistWords) { - blacklistWords = []; - } // We're not going to let regex characters fuck up our RegEx operation. line = line.replace(regexEscapeCharacters, '\\$&'); - blacklistWords.push('^\\s*' + line); - blacklistWords.push('^\\[\\d+:\\d+\\]\\s*' + line); + blacklistRegexExpressions.push('^' + line); } } - const regexStrBL = blacklistWords.join('|'); + const regexStrBL = blacklistRegexExpressions.join('|'); const flagsBL = 'i'; // We wrap this in a try-catch to ensure that broken regex doesn't break // the entire chat. @@ -665,11 +660,16 @@ class ChatRenderer { // Highlight text if (!message.avoidHighlighting && this.highlightParsers) { this.highlightParsers.map((parser) => { + const ourUser = node.getElementsByClassName('name'); + const isEmote = node.getElementsByClassName('emote'); if ( !( parser.highlightBlacklist && parser.blacklistregex && - parser.blacklistregex.test(node.textContent) + ((ourUser.length > 0 && + parser.blacklistregex.test(ourUser[0].textContent)) || + (isEmote.length > 0 && + parser.blacklistregex.test(isEmote[0].textContent))) ) ) { const highlighted = highlightNode(