mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-03 11:01:20 +01:00
refactor: use local cache for plugin isActive check
This commit is contained in:
@@ -14,6 +14,7 @@ const meta = require('../meta');
|
||||
const pubsub = require('../pubsub');
|
||||
const { paths, pluginNamePattern } = require('../constants');
|
||||
const pkgInstall = require('../cli/package-install');
|
||||
const cache = require('../cache');
|
||||
|
||||
const packageManager = pkgInstall.getPackageManager();
|
||||
let packageManagerExecutable = packageManager;
|
||||
@@ -70,6 +71,7 @@ module.exports = function (Plugins) {
|
||||
const count = await db.sortedSetCard('plugins:active');
|
||||
await db.sortedSetAdd('plugins:active', count, id);
|
||||
}
|
||||
cache.set(`plugin:isActive:${id}`, !isActive);
|
||||
meta.reloadRequired = true;
|
||||
const hook = isActive ? 'deactivate' : 'activate';
|
||||
Plugins.hooks.fire(`action:plugin.${hook}`, { id: id });
|
||||
@@ -170,16 +172,20 @@ module.exports = function (Plugins) {
|
||||
if (nconf.get('plugins:active')) {
|
||||
return nconf.get('plugins:active').includes(id);
|
||||
}
|
||||
return await db.isSortedSetMember('plugins:active', id);
|
||||
const cached = cache.get(`plugin:isActive:${id}`);
|
||||
if (cached !== undefined) {
|
||||
return cached;
|
||||
}
|
||||
const isActive = await db.isSortedSetMember('plugins:active', id);
|
||||
cache.set(`plugin:isActive:${id}`, isActive);
|
||||
return isActive;
|
||||
};
|
||||
|
||||
Plugins.getActive = async function () {
|
||||
if (nconf.get('plugins:active')) {
|
||||
return nconf.get('plugins:active');
|
||||
}
|
||||
const active = await db.getSortedSetRange('plugins:active', 0, -1);
|
||||
nconf.set('plugins:active', active);
|
||||
return active;
|
||||
return await db.getSortedSetRange('plugins:active', 0, -1);
|
||||
};
|
||||
|
||||
Plugins.autocomplete = async (fragment) => {
|
||||
|
||||
Reference in New Issue
Block a user