From a2f4c185e55a5c058f68e4d463fef99223424b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 5 Feb 2026 19:34:24 -0500 Subject: [PATCH] refactor: use translator.compile which escapes % and , --- src/flags.js | 6 +++--- src/groups/invite.js | 1 - src/socket.io/helpers.js | 6 ++---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/flags.js b/src/flags.js index 0ff9152978..b2d15e887f 100644 --- a/src/flags.js +++ b/src/flags.js @@ -18,6 +18,7 @@ const privileges = require('./privileges'); const plugins = require('./plugins'); const utils = require('./utils'); const batch = require('./batch'); +const translator = require('./translator'); const Flags = module.exports; @@ -747,7 +748,6 @@ Flags.update = async function (flagId, uid, changeset) { const notifObj = await notifications.create({ type: 'my-flags', bodyShort: `[[notifications:flag-assigned-to-you, ${flagId}]]`, - bodyLong: '', path: `/flags/${flagId}`, nid: `flags:assign:${flagId}:uid:${assigneeId}`, from: uid, @@ -929,11 +929,11 @@ Flags.notify = async function (flagObj, uid, notifySelf = false) { ]); const modUids = await categories.getModeratorUids([cid]); - const titleEscaped = utils.decodeHTMLEntities(title).replace(/%/g, '%').replace(/,/g, ','); + const titleEscaped = utils.decodeHTMLEntities(title); notifObj = await notifications.create({ type: 'new-post-flag', - bodyShort: `[[notifications:user-flagged-post-in, ${displayname}, ${titleEscaped}]]`, + bodyShort: translator.compile('notifications:user-flagged-post-in', displayname, titleEscaped), bodyLong: String(flagObj.target?.content || ''), pid: flagObj.targetId, path: `/flags/${flagObj.flagId}`, diff --git a/src/groups/invite.js b/src/groups/invite.js index 590c72c7ec..747111d156 100644 --- a/src/groups/invite.js +++ b/src/groups/invite.js @@ -66,7 +66,6 @@ module.exports = function (Groups) { const notificationData = await Promise.all(uids.map(uid => notifications.create({ type: 'group-invite', bodyShort: `[[groups:invited.notification-title, ${groupName}]]`, - bodyLong: '', nid: `group:${groupName}:uid:${uid}:invite`, path: `/groups/${slugify(groupName)}`, icon: 'fa-users', diff --git a/src/socket.io/helpers.js b/src/socket.io/helpers.js index 194602f1b3..9841c73578 100644 --- a/src/socket.io/helpers.js +++ b/src/socket.io/helpers.js @@ -113,8 +113,7 @@ SocketHelpers.sendNotificationToPostOwner = async function (pid, fromuid, comman ]); const title = utils.decodeHTMLEntities(topicTitle); - const titleEscaped = title.replace(/%/g, '%').replace(/,/g, ','); - const bodyShort = translator.compile(notification, userData.displayname || userData.name, titleEscaped); + const bodyShort = translator.compile(notification, userData.displayname || userData.name, title); const notifObj = await notifications.create({ type: command, @@ -153,10 +152,9 @@ SocketHelpers.sendNotificationToTopicOwner = async function (tid, fromuid, comma const ownerUid = topicData.uid; const title = utils.decodeHTMLEntities(topicData.title); - const titleEscaped = title.replace(/%/g, '%').replace(/,/g, ','); const notifObj = await notifications.create({ - bodyShort: `[[${notification}, ${displayname}, ${titleEscaped}]]`, + bodyShort: translator.compile(notification, displayname, title), path: `/topic/${topicData.slug}`, nid: `${command}:tid:${tid}:uid:${fromuid}`, from: fromuid,