From eab08ce2ea2fb9d6c3a95c1454f3976808b9cc09 Mon Sep 17 00:00:00 2001
From: agsantos <aline.gondimsantos@savoirfairelinux.com>
Date: Wed, 7 Apr 2021 19:19:04 -0400
Subject: [PATCH] plugins: don't activate if enablePlugins preference is
 disabled

GitLab: #497
Change-Id: I100a9f5813d0a310298bb381a994073966dc010e
---
 src/client/plugin_manager_interface.cpp | 8 +++++++-
 src/manager.cpp                         | 8 +++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/client/plugin_manager_interface.cpp b/src/client/plugin_manager_interface.cpp
index 0da6fa6641..52359626f3 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 6cbc79f6df..2544543e7b 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) {
-- 
GitLab