diff --git a/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js b/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js index 030790582..73530403b 100644 --- a/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js +++ b/deluge/ui/web/js/deluge-all/preferences/PluginsPage.js @@ -146,8 +146,21 @@ Deluge.preferences.Plugins = Ext.extend(Ext.Panel, { }, updatePlugins: function() { - deluge.client.web.get_plugins({ - success: this.onGotPlugins, + var onGotAvailablePlugins = function(plugins) { + this.availablePlugins = plugins; + deluge.client.core.get_enabled_plugins({ + success: onGotEnabledPlugins, + scope: this + }); + } + + var onGotEnabledPlugins = function(plugins) { + this.enabledPlugins = plugins; + this.onGotPlugins() + } + + deluge.client.core.get_available_plugins({ + success: onGotAvailablePlugins, scope: this }); }, @@ -182,9 +195,7 @@ Deluge.preferences.Plugins = Ext.extend(Ext.Panel, { window.open('http://dev.deluge-torrent.org/wiki/Plugins'); }, - onGotPlugins: function(plugins) { - this.enabledPlugins = plugins.enabled_plugins; - this.availablePlugins = plugins.available_plugins; + onGotPlugins: function() { this.setInfo(); this.updatePluginsGrid(); }, diff --git a/deluge/ui/web/json_api.py b/deluge/ui/web/json_api.py index e846234b8..e62fc557a 100644 --- a/deluge/ui/web/json_api.py +++ b/deluge/ui/web/json_api.py @@ -899,6 +899,16 @@ class WebApi(JSONComponent): @export def get_plugins(self): + """All available and enabled plugins within WebUI. + + Note: + This does not represent all plugins from deluge.client.core. + + Returns: + dict: A dict containing 'available_plugins' and 'enabled_plugins' lists. + + """ + return { "enabled_plugins": component.get("Web.PluginManager").plugins.keys(), "available_plugins": component.get("Web.PluginManager").available_plugins