fix: possible fix to escaped emoji in titles

This commit is contained in:
Barış Soner Uşaklı
2024-10-24 20:03:40 -04:00
parent fb9965f8f6
commit f532450139
2 changed files with 13 additions and 8 deletions

View File

@@ -594,9 +594,10 @@ module.exports = function (Topics) {
}
tags = tags.map(tag => tag.value);
const [followersOfPoster, allFollowers] = await Promise.all([
const [followersOfPoster, allFollowers, title] = await Promise.all([
db.getSortedSetRange(`followers:${exceptUid}`, 0, -1),
db.getSortedSetRange(tags.map(tag => `tag:${tag}:followers`), 0, -1),
Topics.getTopicField(postData.topic.tid, 'title'),
]);
const followerSet = new Set(followersOfPoster);
// filter out followers of the poster since they get a notification already
@@ -609,13 +610,13 @@ module.exports = function (Topics) {
const { displayname } = postData.user;
const notifBase = 'notifications:user-posted-topic-with-tag';
let bodyShort = translator.compile(notifBase, displayname, postData.topic.title, tags[0]);
let bodyShort = translator.compile(notifBase, displayname, title, tags[0]);
if (tags.length === 2) {
bodyShort = translator.compile(`${notifBase}-dual`, displayname, postData.topic.title, tags[0], tags[1]);
bodyShort = translator.compile(`${notifBase}-dual`, displayname, title, tags[0], tags[1]);
} else if (tags.length === 3) {
bodyShort = translator.compile(`${notifBase}-triple`, displayname, postData.topic.title, tags[0], tags[1], tags[2]);
bodyShort = translator.compile(`${notifBase}-triple`, displayname, title, tags[0], tags[1], tags[2]);
} else if (tags.length > 3) {
bodyShort = translator.compile(`${notifBase}-multiple`, displayname, postData.topic.title, tags.join(', '));
bodyShort = translator.compile(`${notifBase}-multiple`, displayname, title, tags.join(', '));
}
const notification = await notifications.create({

View File

@@ -10,6 +10,7 @@ const notifications = require('../notifications');
const privileges = require('../privileges');
const plugins = require('../plugins');
const translator = require('../translator');
const topics = require('../topics');
const user = require('./index');
const utils = require('../utils');
@@ -201,15 +202,18 @@ UserNotifications.deleteAll = async function (uid) {
UserNotifications.sendTopicNotificationToFollowers = async function (uid, topicData, postData) {
try {
let followers = await db.getSortedSetRange(`followers:${uid}`, 0, -1);
followers = await privileges.categories.filterUids('read', topicData.cid, followers);
const [allFollowers, title] = await Promise.all([
db.getSortedSetRange(`followers:${uid}`, 0, -1),
topics.getTopicField(topicData.tid, 'title'),
]);
const followers = await privileges.categories.filterUids('read', topicData.cid, allFollowers);
if (!followers.length) {
return;
}
const notifObj = await notifications.create({
type: 'new-topic',
bodyShort: translator.compile('notifications:user-posted-topic', postData.user.displayname, postData.topic.title),
bodyShort: translator.compile('notifications:user-posted-topic', postData.user.displayname, title),
bodyLong: postData.content,
pid: postData.pid,
path: `/post/${postData.pid}`,