v1.18.x
barisusakli 10 years ago
parent 68f985c6da
commit 48acb0082e

@ -14,31 +14,27 @@ var winston = require('winston'),
module.exports = function(Plugins) { module.exports = function(Plugins) {
Plugins.toggleActive = function(id, callback) { Plugins.toggleActive = function(id, callback) {
Plugins.isActive(id, function(err, active) { callback = callback || function() {};
if (err) { var isActive;
winston.warn('[plugins] Could not toggle active state on plugin \'' + id + '\''); async.waterfall([
return callback(err); function(next) {
Plugins.isActive(id, next);
},
function(_isActive, next) {
isActive = _isActive;
db[isActive ? 'setRemove' : 'setAdd']('plugins:active', id, next);
},
function(next) {
meta.reloadRequired = true;
Plugins.fireHook(isActive ? 'action:plugin.deactivate' : 'action:plugin.activate', id);
next();
} }
], function(err) {
db[(active ? 'setRemove' : 'setAdd')]('plugins:active', id, function(err, success) {
if (err) { if (err) {
winston.warn('[plugins] Could not toggle active state on plugin \'' + id + '\''); winston.warn('[plugins] Could not toggle active state on plugin \'' + id + '\'');
return callback(err); return callback(err);
} }
callback(null, {id: id, active: !isActive});
meta.reloadRequired = true;
if (active) {
Plugins.fireHook('action:plugin.deactivate', id);
}
if (typeof callback === 'function') {
callback(null, {
id: id,
active: !active
});
}
});
}); });
}; };

Loading…
Cancel
Save