From d3b3720915f5846e8f5a8e0bee9c17b3ff233902 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 9 Oct 2025 13:56:59 -0400 Subject: [PATCH] refactor: move post attachment handling directly into posts.create --- src/activitypub/notes.js | 10 +++------- src/posts/create.js | 5 ++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/activitypub/notes.js b/src/activitypub/notes.js index 130cb1874f..8e11898f26 100644 --- a/src/activitypub/notes.js +++ b/src/activitypub/notes.js @@ -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}`); } diff --git a/src/posts/create.js b/src/posts/create.js index 656ae68ab0..5d56c05d26 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -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 });