diff --git a/src/search.js b/src/search.js index b8c2717941..7ef8eb8062 100644 --- a/src/search.js +++ b/src/search.js @@ -284,7 +284,7 @@ async function getWatchedCids(data) { if (!data.categories.includes('watched')) { return []; } - return await user.getCategoriesByStates(data.uid, [categories.watchStates.watching]); + return await user.getWatchedCategories(data.uid); } async function getChildrenCids(data) { diff --git a/src/user/categories.js b/src/user/categories.js index 29f56cbdda..a1d141a628 100644 --- a/src/user/categories.js +++ b/src/user/categories.js @@ -4,6 +4,7 @@ const _ = require('lodash'); const db = require('../database'); const categories = require('../categories'); +const plugins = require('../plugins'); module.exports = function (User) { User.setCategoryWatchState = async function (uid, cids, state) { @@ -36,14 +37,24 @@ module.exports = function (User) { if (!(parseInt(uid, 10) > 0)) { return []; } - return await User.getCategoriesByStates(uid, [categories.watchStates.ignoring]); + const cids = await User.getCategoriesByStates(uid, [categories.watchStates.ignoring]); + const result = await plugins.hooks.fire('filter:user.getIgnoredCategories', { + uid: uid, + cids: cids, + }); + return result.cids; }; User.getWatchedCategories = async function (uid) { if (!(parseInt(uid, 10) > 0)) { return []; } - return await User.getCategoriesByStates(uid, [categories.watchStates.watching]); + const cids = await User.getCategoriesByStates(uid, [categories.watchStates.watching]); + const result = await plugins.hooks.fire('filter:user.getWatchedCategories', { + uid: uid, + cids: cids, + }); + return result.cids; }; User.getCategoriesByStates = async function (uid, states) {