refactor(socket.io): deprecate categories.get in favour of api.categories.list

This commit is contained in:
Julian Lam
2023-10-19 10:21:51 -04:00
parent 52b78e83a8
commit 96046373da
4 changed files with 24 additions and 9 deletions

View File

@@ -15,6 +15,22 @@ const hasAdminPrivilege = async (uid, privilege = 'categories') => {
}
};
categoriesAPI.list = async (caller) => {
async function getCategories() {
const cids = await categories.getCidsByPrivilege('categories:cid', caller.uid, 'find');
return await categories.getCategoriesData(cids);
}
const [isAdmin, categoriesData] = await Promise.all([
user.isAdministrator(caller.uid),
getCategories(),
]);
return {
categories: categoriesData.filter(category => category && (!category.disabled || isAdmin)),
};
};
categoriesAPI.get = async function (caller, data) {
const [userPrivileges, category] = await Promise.all([
privileges.categories.get(data.cid, caller.uid),

View File

@@ -7,6 +7,10 @@ const helpers = require('../helpers');
const Categories = module.exports;
Categories.list = async (req, res) => {
helpers.formatApiResponse(200, res, await api.categories.list(req));
};
Categories.get = async (req, res) => {
helpers.formatApiResponse(200, res, await api.categories.get(req, req.params));
};

View File

@@ -10,6 +10,7 @@ const { setupApiRoute } = routeHelpers;
module.exports = function () {
const middlewares = [middleware.ensureLoggedIn];
setupApiRoute(router, 'get', '/', [...middlewares], controllers.write.categories.list);
setupApiRoute(router, 'post', '/', [...middlewares, middleware.checkRequired.bind(null, ['name'])], controllers.write.categories.create);
setupApiRoute(router, 'get', '/:cid', [], controllers.write.categories.get);
setupApiRoute(router, 'put', '/:cid', [...middlewares], controllers.write.categories.update);

View File

@@ -18,15 +18,9 @@ SocketCategories.getRecentReplies = async function (socket, cid) {
};
SocketCategories.get = async function (socket) {
async function getCategories() {
const cids = await categories.getCidsByPrivilege('categories:cid', socket.uid, 'find');
return await categories.getCategoriesData(cids);
}
const [isAdmin, categoriesData] = await Promise.all([
user.isAdministrator(socket.uid),
getCategories(),
]);
return categoriesData.filter(category => category && (!category.disabled || isAdmin));
sockets.warnDeprecated(socket, 'GET /api/v3/categories');
const { categories } = await api.categories.list(socket);
return categories;
};
SocketCategories.getWatchedCategories = async function (socket) {