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