From 761a3dab9e0eee928514fd81f26190ba51719d98 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 20 Dec 2019 04:06:38 +0300 Subject: [PATCH] Ensure that last set value of ignore_sensitive_content_restrictions is set. GitOrigin-RevId: 266ac32fac8906b852a9e47561f5f83be74885bc --- td/telegram/ConfigManager.cpp | 14 ++++++++++++-- td/telegram/ConfigManager.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/td/telegram/ConfigManager.cpp b/td/telegram/ConfigManager.cpp index 1f214f823..9bd9d8401 100644 --- a/td/telegram/ConfigManager.cpp +++ b/td/telegram/ConfigManager.cpp @@ -956,6 +956,7 @@ void ConfigManager::set_content_settings(bool ignore_sensitive_content_restricti return promise.set_error(Status::Error(500, "Request aborted")); } + last_set_content_settings_ = ignore_sensitive_content_restrictions; auto &queries = set_content_settings_queries_[ignore_sensitive_content_restrictions]; queries.push_back(std::move(promise)); if (!is_set_content_settings_request_sent_) { @@ -1005,7 +1006,8 @@ void ConfigManager::on_result(NetQueryPtr res) { } } else { ConfigShared &shared_config = G()->shared_config(); - if (shared_config.get_option_boolean("can_ignore_sensitive_content_restrictions")) { + if (shared_config.get_option_boolean("can_ignore_sensitive_content_restrictions") && + last_set_content_settings_ == ignore_sensitive_content_restrictions) { shared_config.set_option_boolean("ignore_sensitive_content_restrictions", ignore_sensitive_content_restrictions); } @@ -1016,7 +1018,15 @@ void ConfigManager::on_result(NetQueryPtr res) { } if (!set_content_settings_queries_[!ignore_sensitive_content_restrictions].empty()) { - set_content_settings(!ignore_sensitive_content_restrictions, Auto()); + if (ignore_sensitive_content_restrictions == last_set_content_settings_) { + promises = std::move(set_content_settings_queries_[!ignore_sensitive_content_restrictions]); + set_content_settings_queries_[!ignore_sensitive_content_restrictions].clear(); + for (auto &promise : promises) { + promise.set_value(Unit()); + } + } else { + set_content_settings(!ignore_sensitive_content_restrictions, Auto()); + } } return; } diff --git a/td/telegram/ConfigManager.h b/td/telegram/ConfigManager.h index 203ed11a8..f0ad4b8e7 100644 --- a/td/telegram/ConfigManager.h +++ b/td/telegram/ConfigManager.h @@ -102,6 +102,7 @@ class ConfigManager : public NetQueryCallback { vector> get_content_settings_queries_; vector> set_content_settings_queries_[2]; bool is_set_content_settings_request_sent_ = false; + bool last_set_content_settings_ = false; void start_up() override; void hangup_shared() override;