mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-05 03:49:14 +02:00
send ap follow/undo-follow if remote category watch state changes
This commit is contained in:
@@ -5,6 +5,7 @@ const _ = require('lodash');
|
||||
const db = require('../database');
|
||||
const categories = require('../categories');
|
||||
const plugins = require('../plugins');
|
||||
const api = require('../api');
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = function (User) {
|
||||
@@ -27,7 +28,18 @@ module.exports = function (User) {
|
||||
if (exists.includes(false)) {
|
||||
throw new Error('[[error:no-category]]');
|
||||
}
|
||||
await db.sortedSetsAdd(cids.map(cid => `cid:${cid}:uid:watch:state`), state, uid);
|
||||
|
||||
const apiMethod = state >= categories.watchStates.tracking ? 'follow' : 'unfollow';
|
||||
const follows = cids.filter(cid => !utils.isNumber(cid)).map(cid => api.activitypub[apiMethod]({ uid }, {
|
||||
type: 'uid',
|
||||
id: uid,
|
||||
actor: cid,
|
||||
})); // returns promises
|
||||
|
||||
await Promise.all([
|
||||
db.sortedSetsAdd(cids.map(cid => `cid:${cid}:uid:watch:state`), state, uid),
|
||||
...follows,
|
||||
]);
|
||||
};
|
||||
|
||||
User.getCategoryWatchState = async function (uid) {
|
||||
|
||||
Reference in New Issue
Block a user