feat: send out Update(Actor) when a category is edited

This commit also updates the activity sent out when a user profile is edited. The activity is now sent to all known actors.

closes #12655
This commit is contained in:
Julian Lam
2024-06-25 11:38:13 -04:00
parent b66d998d37
commit 09d8fbf978
2 changed files with 21 additions and 3 deletions

View File

@@ -172,12 +172,27 @@ activitypubApi.create.note = enabledCheck(async (caller, { pid }) => {
activitypubApi.update = {};
activitypubApi.update.profile = enabledCheck(async (caller, { uid }) => {
const [object, followers] = await Promise.all([
const [object, targets] = await Promise.all([
activitypub.mocks.actors.user(uid),
db.getSortedSetMembers(`followersRemote:${caller.uid}`),
db.getSortedSetMembers('usersRemote:lastCrawled'),
]);
await activitypub.send('uid', caller.uid, followers, {
await activitypub.send('uid', caller.uid, targets, {
id: `${object.id}#activity/update/${Date.now()}`,
type: 'Update',
to: [activitypub._constants.publicAddress],
cc: [],
object,
});
});
activitypubApi.update.category = enabledCheck(async (caller, { cid }) => {
const [object, targets] = await Promise.all([
activitypub.mocks.actors.category(cid),
db.getSortedSetMembers('usersRemote:lastCrawled'),
]);
await activitypub.send('cid', cid, targets, {
id: `${object.id}#activity/update/${Date.now()}`,
type: 'Update',
to: [activitypub._constants.publicAddress],

View File

@@ -8,6 +8,8 @@ const user = require('../user');
const groups = require('../groups');
const privileges = require('../privileges');
const activitypubApi = require('./activitypub');
const categoriesAPI = module.exports;
const hasAdminPrivilege = async (uid, privilege = 'categories') => {
@@ -63,6 +65,7 @@ categoriesAPI.update = async function (caller, data) {
const payload = {};
payload[cid] = values;
await categories.update(payload);
await activitypubApi.update.category(caller, { cid });
};
categoriesAPI.delete = async function (caller, { cid }) {