From 8d8117ffa147bb10180c0274bfbd98c69f476669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 29 Jul 2020 11:57:20 -0400 Subject: [PATCH] feat: reduce amount of data loaded on acp admin page get rid of socket call and use ajaxify.data.categories --- public/src/admin/manage/categories.js | 8 +------- src/controllers/admin/categories.js | 14 ++++++++++++-- src/socket.io/admin/categories.js | 11 +++++++++-- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/public/src/admin/manage/categories.js b/public/src/admin/manage/categories.js index d8e1b56f66b3..713bb96bc1d4 100644 --- a/public/src/admin/manage/categories.js +++ b/public/src/admin/manage/categories.js @@ -11,13 +11,7 @@ define('admin/manage/categories', [ var sortables; Categories.init = function () { - socket.emit('admin.categories.getAll', function (err, payload) { - if (err) { - return app.alertError(err.message); - } - - Categories.render(payload); - }); + Categories.render(ajaxify.data.categories); $('button[data-action="create"]').on('click', Categories.throwCreateModal); diff --git a/src/controllers/admin/categories.js b/src/controllers/admin/categories.js index c944c649430d..bbe2104c8ab4 100644 --- a/src/controllers/admin/categories.js +++ b/src/controllers/admin/categories.js @@ -43,9 +43,19 @@ categoriesController.get = async function (req, res, next) { }); }; -categoriesController.getAll = function (req, res) { +categoriesController.getAll = async function (req, res) { // Categories list will be rendered on client side with recursion, etc. - res.render('admin/manage/categories', {}); + const cids = await categories.getAllCidsFromSet('categories:cid'); + const fields = [ + 'cid', 'name', 'level', 'icon', 'parentCid', 'disabled', 'link', + 'color', 'bgColor', 'backgroundImage', 'imageClass', + ]; + const categoriesData = await categories.getCategoriesFields(cids, fields); + const result = await plugins.fireHook('filter:admin.categories.get', { categories: categoriesData, fields: fields }); + const tree = categories.getTree(result.categories, 0); + res.render('admin/manage/categories', { + categories: tree, + }); }; categoriesController.getAnalytics = async function (req, res) { diff --git a/src/socket.io/admin/categories.js b/src/socket.io/admin/categories.js index 50e61f94bcc6..7c621c9fa92e 100644 --- a/src/socket.io/admin/categories.js +++ b/src/socket.io/admin/categories.js @@ -1,5 +1,7 @@ 'use strict'; +const winston = require('winston'); + const groups = require('../../groups'); const user = require('../../user'); const categories = require('../../categories'); @@ -18,9 +20,14 @@ Categories.create = async function (socket, data) { }; Categories.getAll = async function () { + winston.warn('[deprecated] admin.categories.getAll deprecated, data is returned in the api route'); const cids = await categories.getAllCidsFromSet('categories:cid'); - const categoriesData = await categories.getCategoriesData(cids); - const result = await plugins.fireHook('filter:admin.categories.get', { categories: categoriesData }); + const fields = [ + 'cid', 'name', 'level', 'icon', 'parentCid', 'disabled', 'link', + 'color', 'bgColor', 'backgroundImage', 'imageClass', + ]; + const categoriesData = await categories.getCategoriesFields(cids, fields); + const result = await plugins.fireHook('filter:admin.categories.get', { categories: categoriesData, fields: fields }); return categories.getTree(result.categories, 0); };