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 pubsub = require('../pubsub');
|
||||||
const { paths, pluginNamePattern } = require('../constants');
|
const { paths, pluginNamePattern } = require('../constants');
|
||||||
const pkgInstall = require('../cli/package-install');
|
const pkgInstall = require('../cli/package-install');
|
||||||
|
const cache = require('../cache');
|
||||||
|
|
||||||
const packageManager = pkgInstall.getPackageManager();
|
const packageManager = pkgInstall.getPackageManager();
|
||||||
let packageManagerExecutable = packageManager;
|
let packageManagerExecutable = packageManager;
|
||||||
@@ -70,6 +71,7 @@ module.exports = function (Plugins) {
|
|||||||
const count = await db.sortedSetCard('plugins:active');
|
const count = await db.sortedSetCard('plugins:active');
|
||||||
await db.sortedSetAdd('plugins:active', count, id);
|
await db.sortedSetAdd('plugins:active', count, id);
|
||||||
}
|
}
|
||||||
|
cache.set(`plugin:isActive:${id}`, !isActive);
|
||||||
meta.reloadRequired = true;
|
meta.reloadRequired = true;
|
||||||
const hook = isActive ? 'deactivate' : 'activate';
|
const hook = isActive ? 'deactivate' : 'activate';
|
||||||
Plugins.hooks.fire(`action:plugin.${hook}`, { id: id });
|
Plugins.hooks.fire(`action:plugin.${hook}`, { id: id });
|
||||||
@@ -170,16 +172,20 @@ module.exports = function (Plugins) {
|
|||||||
if (nconf.get('plugins:active')) {
|
if (nconf.get('plugins:active')) {
|
||||||
return nconf.get('plugins:active').includes(id);
|
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 () {
|
Plugins.getActive = async function () {
|
||||||
if (nconf.get('plugins:active')) {
|
if (nconf.get('plugins:active')) {
|
||||||
return nconf.get('plugins:active');
|
return nconf.get('plugins:active');
|
||||||
}
|
}
|
||||||
const active = await db.getSortedSetRange('plugins:active', 0, -1);
|
return await db.getSortedSetRange('plugins:active', 0, -1);
|
||||||
nconf.set('plugins:active', active);
|
|
||||||
return active;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Plugins.autocomplete = async (fragment) => {
|
Plugins.autocomplete = async (fragment) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user