diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index f9a11c04d..ef0d5e979 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -1131,6 +1131,24 @@ void ApiWrap::gotUserFull( Data::PeerUpdate::Flag::FullInfo); } +void ApiWrap::requestPeerSettings(not_null peer) { + if (!_requestedPeerSettings.emplace(peer).second) { + return; + } + request(MTPmessages_GetPeerSettings( + peer->input + )).done([=](const MTPmessages_PeerSettings &result) { + result.match([&](const MTPDmessages_peerSettings &data) { + _session->data().processUsers(data.vusers()); + _session->data().processChats(data.vchats()); + peer->setSettings(data.vsettings()); + _requestedPeerSettings.erase(peer); + }); + }).fail([=] { + _requestedPeerSettings.erase(peer); + }).send(); +} + void ApiWrap::migrateChat( not_null chat, FnMut)> done, diff --git a/Telegram/SourceFiles/apiwrap.h b/Telegram/SourceFiles/apiwrap.h index bd4acdf52..d54a83d18 100644 --- a/Telegram/SourceFiles/apiwrap.h +++ b/Telegram/SourceFiles/apiwrap.h @@ -174,6 +174,7 @@ public: Fn fail); void requestFullPeer(not_null peer); + void requestPeerSettings(not_null peer); using UpdatedFileReferences = Data::UpdatedFileReferences; using FileReferencesHandler = FnMut; @@ -535,6 +536,7 @@ private: using PeerRequests = base::flat_map; PeerRequests _fullPeerRequests; + base::flat_set> _requestedPeerSettings; base::flat_map< not_null,