feat: plumb uid into .addParentPosts() so .assertNotes() can be properly called

This commit is contained in:
Julian Lam
2024-01-10 20:49:27 -05:00
parent 06e1583461
commit 0d478b2c76
2 changed files with 11 additions and 5 deletions

View File

@@ -232,7 +232,7 @@ module.exports = function (Topics) {
] = await Promise.all([ ] = await Promise.all([
posts.getUserInfoForPosts([postData.uid], uid), posts.getUserInfoForPosts([postData.uid], uid),
Topics.getTopicFields(tid, ['tid', 'uid', 'title', 'slug', 'cid', 'postcount', 'mainPid', 'scheduled', 'tags']), Topics.getTopicFields(tid, ['tid', 'uid', 'title', 'slug', 'cid', 'postcount', 'mainPid', 'scheduled', 'tags']),
Topics.addParentPosts([postData]), Topics.addParentPosts([postData], uid),
Topics.syncBacklinks(postData), Topics.syncBacklinks(postData),
posts.parsePost(postData), posts.parsePost(postData),
]); ]);

View File

@@ -9,6 +9,7 @@ const db = require('../database');
const user = require('../user'); const user = require('../user');
const posts = require('../posts'); const posts = require('../posts');
const meta = require('../meta'); const meta = require('../meta');
const activitypub = require('../activitypub');
const plugins = require('../plugins'); const plugins = require('../plugins');
const utils = require('../utils'); const utils = require('../utils');
@@ -110,7 +111,9 @@ module.exports = function (Topics) {
const pids = postData.map(post => post && post.pid); const pids = postData.map(post => post && post.pid);
async function getPostUserData(field, method) { async function getPostUserData(field, method) {
const uids = _.uniq(postData.filter(p => p && parseInt(p[field], 10) >= 0).map(p => p[field])); const uids = _.uniq(postData
.filter(p => p && (activitypub.helpers.isUri(p[field]) || parseInt(p[field], 10) >= 0))
.map(p => p[field]));
const userData = await method(uids); const userData = await method(uids);
return _.zipObject(uids, userData); return _.zipObject(uids, userData);
} }
@@ -126,7 +129,7 @@ module.exports = function (Topics) {
getPostUserData('uid', async uids => await posts.getUserInfoForPosts(uids, uid)), getPostUserData('uid', async uids => await posts.getUserInfoForPosts(uids, uid)),
getPostUserData('editor', async uids => await user.getUsersFields(uids, ['uid', 'username', 'userslug'])), getPostUserData('editor', async uids => await user.getUsersFields(uids, ['uid', 'username', 'userslug'])),
getPostReplies(postData, uid), getPostReplies(postData, uid),
Topics.addParentPosts(postData), Topics.addParentPosts(postData, uid),
]); ]);
postData.forEach((postObj, i) => { postData.forEach((postObj, i) => {
@@ -175,13 +178,16 @@ module.exports = function (Topics) {
}); });
}; };
Topics.addParentPosts = async function (postData) { Topics.addParentPosts = async function (postData, uid) {
let parentPids = postData.map(postObj => (postObj && postObj.hasOwnProperty('toPid') ? parseInt(postObj.toPid, 10) : null)).filter(Boolean); let parentPids = postData
.filter(p => p && p.hasOwnProperty('toPid') && (activitypub.helpers.isUri(p.toPid) || utils.isNumber(p.toPid)))
.map(postObj => postObj.toPid);
if (!parentPids.length) { if (!parentPids.length) {
return; return;
} }
parentPids = _.uniq(parentPids); parentPids = _.uniq(parentPids);
await activitypub.assertNotes(uid, parentPids.filter(pid => activitypub.helpers.isUri(pid)));
const parentPosts = await posts.getPostsFields(parentPids, ['uid']); const parentPosts = await posts.getPostsFields(parentPids, ['uid']);
const parentUids = _.uniq(parentPosts.map(postObj => postObj && postObj.uid)); const parentUids = _.uniq(parentPosts.map(postObj => postObj && postObj.uid));
const userData = await user.getUsersFields(parentUids, ['username']); const userData = await user.getUsersFields(parentUids, ['username']);