From 856c537335c1758bd59ae87e3d92d0a6ca96104a Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 1 Mar 2023 12:52:50 +0400 Subject: [PATCH] Show correct state of "Accept calls" checkbox. --- Telegram/SourceFiles/api/api_authorizations.cpp | 10 ++++++++++ Telegram/SourceFiles/api/api_authorizations.h | 3 +++ Telegram/SourceFiles/settings/settings_calls.cpp | 3 +++ 3 files changed, 16 insertions(+) diff --git a/Telegram/SourceFiles/api/api_authorizations.cpp b/Telegram/SourceFiles/api/api_authorizations.cpp index d324699aa..6d82a1d11 100644 --- a/Telegram/SourceFiles/api/api_authorizations.cpp +++ b/Telegram/SourceFiles/api/api_authorizations.cpp @@ -26,6 +26,7 @@ Authorizations::Entry ParseEntry(const MTPDauthorization &data) { result.hash = data.is_current() ? 0 : data.vhash().v; result.incomplete = data.is_password_pending(); + result.callsDisabled = data.is_call_requests_disabled(); const auto apiId = result.apiId = data.vapi_id().v; const auto isTest = (apiId == TestApiId); @@ -135,6 +136,7 @@ void Authorizations::reload() { ) | ranges::views::transform([](const MTPAuthorization &d) { return ParseEntry(d.c_authorization()); }) | ranges::to; + refreshCallsDisabledHereFromCloud(); _listChanges.fire({}); }); }).fail([=] { @@ -146,6 +148,14 @@ void Authorizations::cancelCurrentRequest() { _api.request(base::take(_requestId)).cancel(); } +void Authorizations::refreshCallsDisabledHereFromCloud() { + const auto that = ranges::find(_list, 0, &Entry::hash); + if (that != end(_list) + && !_toggleCallsDisabledRequests.contains(0)) { + _callsDisabledHere = that->callsDisabled; + } +} + void Authorizations::requestTerminate( Fn &&done, Fn &&fail, diff --git a/Telegram/SourceFiles/api/api_authorizations.h b/Telegram/SourceFiles/api/api_authorizations.h index f789740fc..96819edf1 100644 --- a/Telegram/SourceFiles/api/api_authorizations.h +++ b/Telegram/SourceFiles/api/api_authorizations.h @@ -21,6 +21,7 @@ public: uint64 hash = 0; bool incomplete = false; + bool callsDisabled = false; int apiId = 0; TimeId activeTime = 0; QString name, active, info, ip, location, system, platform; @@ -53,6 +54,8 @@ public: [[nodiscard]] rpl::producer callsDisabledHereChanges() const; private: + void refreshCallsDisabledHereFromCloud(); + MTP::Sender _api; mtpRequestId _requestId = 0; diff --git a/Telegram/SourceFiles/settings/settings_calls.cpp b/Telegram/SourceFiles/settings/settings_calls.cpp index d0bb35861..b1bb38c26 100644 --- a/Telegram/SourceFiles/settings/settings_calls.cpp +++ b/Telegram/SourceFiles/settings/settings_calls.cpp @@ -48,6 +48,9 @@ Calls::Calls( not_null controller) : Section(parent) , _controller(controller) { + // Request valid value of calls disabled flag. + controller->session().api().authorizations().reload(); + setupContent(); requestPermissionAndStartTestingMicrophone(); }