refactor: move post attachment handling directly into posts.create

This commit is contained in:
Julian Lam
2025-10-09 13:56:59 -04:00
parent 4d24309a06
commit d3b3720915
2 changed files with 7 additions and 8 deletions

View File

@@ -210,7 +210,7 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => {
activitypub.helpers.log(`[notes/assert] ${count} new note(s) found.`);
if (!hasTid) {
const { to, cc, attachment } = mainPost._activitypub;
const { to, cc } = mainPost._activitypub;
const tags = await Notes._normalizeTags(mainPost._activitypub.tag || []);
try {
@@ -239,7 +239,6 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => {
id: tid,
path: mainPost._activitypub.image,
}) : null,
posts.attachments.update(mainPid, attachment),
]);
if (context) {
@@ -249,16 +248,13 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => {
}
for (const post of unprocessed) {
const { to, cc, attachment } = post._activitypub;
const { to, cc } = post._activitypub;
try {
// eslint-disable-next-line no-await-in-loop
await topics.reply(post);
// eslint-disable-next-line no-await-in-loop
await Promise.all([
Notes.updateLocalRecipients(post.pid, { to, cc }),
posts.attachments.update(post.pid, attachment),
]);
await Notes.updateLocalRecipients(post.pid, { to, cc });
} catch (e) {
activitypub.helpers.log(`[activitypub/notes.assert] Could not add reply (${post.pid}): ${e.message}`);
}

View File

@@ -71,6 +71,8 @@ module.exports = function (Posts) {
const topicData = await topics.getTopicFields(tid, ['cid', 'pinned']);
postData.cid = topicData.cid;
const hasAttachment = _activitypub.attachment && _activitypub.attachment.length;
await Promise.all([
db.sortedSetAdd('posts:pid', timestamp, postData.pid),
utils.isNumber(pid) ? db.incrObjectField('global', 'postCount') : null,
@@ -79,7 +81,8 @@ module.exports = function (Posts) {
categories.onNewPostMade(topicData.cid, topicData.pinned, postData),
groups.onNewPostMade(postData),
addReplyTo(postData, timestamp),
Posts.uploads.sync(postData.pid),
Posts.uploads.sync(pid),
hasAttachment ? Posts.attachments.update(pid, _activitypub.attachment) : null,
]);
const result = await plugins.hooks.fire('filter:post.get', { post: postData, uid: data.uid });