From 46c74061e68401c95adc2e9beea85b3c8157b53f Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Tue, 11 Oct 2022 09:42:29 -0300
Subject: [PATCH] misc: fix set general preference without reload

If a general preference is set and it does not require
reload, then all account preferences should be modified.

GitLab: #24

Change-Id: If587555fad40fb3962b790f336c9bbefaedcb1f7
---
 AutoAnswer/PluginPreferenceHandler.cpp | 19 +++++++++++++------
 WaterMark/PluginPreferenceHandler.cpp  | 20 ++++++++++++++------
 WaterMark/WatermarkMediaHandler.cpp    |  4 ++--
 3 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/AutoAnswer/PluginPreferenceHandler.cpp b/AutoAnswer/PluginPreferenceHandler.cpp
index 0690932..eaf9001 100644
--- a/AutoAnswer/PluginPreferenceHandler.cpp
+++ b/AutoAnswer/PluginPreferenceHandler.cpp
@@ -51,13 +51,20 @@ PluginPreferenceHandler::setPreferenceAttribute(const std::string& accountId,
                                              const std::string& key,
                                              const std::string& value)
 {
-    auto accIt = preferences_.find("default");
-    if (!accountId.empty())
+    if (accountId.empty()) {
+        for (auto& prefMap : preferences_) {
+            auto it = prefMap.second.find(key);
+            if (it != prefMap.second.end() && it->second != value) {
+                it->second = value;
+            }
+        }
+    } else {
+        auto accIt = preferences_.find("default");
         accIt = preferences_.emplace(accountId, preferences_["default"]).first;
-
-    auto it = accIt->second.find(key);
-    if (it != accIt->second.end() && it->second != value) {
-        it->second = value;
+        auto it = accIt->second.find(key);
+        if (it != accIt->second.end() && it->second != value) {
+            it->second = value;
+        }
     }
 }
 
diff --git a/WaterMark/PluginPreferenceHandler.cpp b/WaterMark/PluginPreferenceHandler.cpp
index b9dcdc8..1f47024 100644
--- a/WaterMark/PluginPreferenceHandler.cpp
+++ b/WaterMark/PluginPreferenceHandler.cpp
@@ -52,14 +52,22 @@ PluginPreferenceHandler::setPreferenceAttribute(const std::string& accountId,
                                              const std::string& key,
                                              const std::string& value)
 {
-    auto accIt = preferences_.find("default");
-    if (!accountId.empty())
+    if (accountId.empty()) {
+        for (auto& prefMap : preferences_) {
+            auto it = prefMap.second.find(key);
+            if (it != prefMap.second.end() && it->second != value) {
+                it->second = value;
+            }
+        }
+    } else {
+        auto accIt = preferences_.find("default");
         accIt = preferences_.emplace(accountId, preferences_["default"]).first;
-
-    auto it = accIt->second.find(key);
-    if (it != accIt->second.end() && it->second != value) {
-        it->second = value;
+        auto it = accIt->second.find(key);
+        if (it != accIt->second.end() && it->second != value) {
+            it->second = value;
+        }
     }
+
     wmh_->setParameters(accountId);
 }
 
diff --git a/WaterMark/WatermarkMediaHandler.cpp b/WaterMark/WatermarkMediaHandler.cpp
index 4ed3b9b..3971ce5 100644
--- a/WaterMark/WatermarkMediaHandler.cpp
+++ b/WaterMark/WatermarkMediaHandler.cpp
@@ -82,9 +82,9 @@ WatermarkMediaHandler::notifyAVFrameSubject(const StreamData& data, jami::avSubj
 void
 WatermarkMediaHandler::setParameters(const std::string& accountId)
 {
-    if (accountId != accountId_)
+    if (!accountId.empty() && accountId != accountId_)
         return;
-    auto preferences = aph_->getPreferences(accountId);
+    auto preferences = aph_->getPreferences(accountId_);
     try {
         mediaSubscriber_->setParameter(preferences["fontsize"], Parameter::FONTSIZE);
         mediaSubscriber_->setParameter(preferences["logosize"], Parameter::LOGOSIZE);
-- 
GitLab