fix: #9681, update posts in queue if target tid is merged

This commit is contained in:
Barış Soner Uşaklı
2021-07-30 22:51:06 -04:00
parent 03a98f4de4
commit 0c81642997
4 changed files with 52 additions and 10 deletions

View File

@@ -48,9 +48,14 @@ module.exports = function (Posts) {
}
// Filter by tid if present
if (isFinite(filter.tid)) {
if (utils.isNumber(filter.tid)) {
const tid = parseInt(filter.tid, 10);
postData = postData.filter(item => item.data.tid && parseInt(item.data.tid, 10) === tid);
} else if (Array.isArray(filter.tid)) {
const tids = filter.tid.map(tid => parseInt(tid, 10));
postData = postData.filter(
item => item.data.tid && tids.includes(parseInt(item.data.tid, 10))
);
}
return postData;
@@ -330,4 +335,18 @@ module.exports = function (Posts) {
}
return isModerator && isModeratorOfTargetCid;
};
Posts.updateQueuedPostsTopic = async function (newTid, tids) {
const postData = await Posts.getQueuedPosts({ tid: tids }, { metadata: false });
if (postData.length) {
postData.forEach((post) => {
post.data.tid = newTid;
});
await db.setObjectBulk(
postData.map(p => `post:queue:${p.id}`),
postData.map(p => ({ data: JSON.stringify(p.data) }))
);
cache.del('post-queue');
}
};
};