diff --git a/src/client/plugin_manager_interface.cpp b/src/client/plugin_manager_interface.cpp index 0da6fa6641d564c2e417dc496be1942f0ed21701..52359626f37abb4834ad24cc370cc0988a8f4e9e 100644 --- a/src/client/plugin_manager_interface.cpp +++ b/src/client/plugin_manager_interface.cpp @@ -83,7 +83,7 @@ getInstalledPlugins() std::vector<std::string> getLoadedPlugins() { - return jami::Manager::instance().getJamiPluginManager().getLoadedPlugins(); + return jami::Manager::instance().pluginPreferences.getLoadedPlugins(); } int @@ -186,6 +186,12 @@ void setPluginsEnabled(bool state) { jami::Manager::instance().pluginPreferences.setPluginsEnabled(state); + for (auto& item : jami::Manager::instance().pluginPreferences.getLoadedPlugins()) { + if (state) + jami::Manager::instance().getJamiPluginManager().loadPlugin(item); + else + jami::Manager::instance().getJamiPluginManager().unloadPlugin(item); + } jami::Manager::instance().saveConfig(); } } // namespace DRing diff --git a/src/manager.cpp b/src/manager.cpp index 6cbc79f6df6a08cb1e99331a7c289b424dc3b7a9..2544543e7be831dc6bffdb2742fedc8fe6c94960 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -2918,9 +2918,11 @@ Manager::loadAccountMap(const YAML::Node& node) #ifdef ENABLE_PLUGIN pluginPreferences.unserialize(node); - std::vector<std::string> loadedPlugins = pluginPreferences.getLoadedPlugins(); - for (const std::string& plugin : loadedPlugins) { - jami::Manager::instance().getJamiPluginManager().loadPlugin(plugin); + if (pluginPreferences.getPluginsEnabled()) { + std::vector<std::string> loadedPlugins = pluginPreferences.getLoadedPlugins(); + for (const std::string& plugin : loadedPlugins) { + jami::Manager::instance().getJamiPluginManager().loadPlugin(plugin); + } } #endif } catch (const YAML::Exception& e) {