From 28be89f7c31411226373acd204a651f8edf695c7 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 9 Sep 2021 16:59:36 +0300 Subject: [PATCH] Correctly apply photos from "min" users. --- Telegram/SourceFiles/data/data_session.cpp | 4 +++- Telegram/SourceFiles/data/data_user.h | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 78b0f28f5..ae4698e84 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -415,6 +415,7 @@ not_null Session::processUser(const MTPUser &data) { | (!minimal ? Flag::Contact | Flag::MutualContact + | Flag::DiscardMinPhoto : Flag()); const auto flagsSet = (data.is_deleted() ? Flag::Deleted : Flag()) | (data.is_verified() ? Flag::Verified : Flag()) @@ -425,6 +426,7 @@ not_null Session::processUser(const MTPUser &data) { | (!minimal ? (data.is_contact() ? Flag::Contact : Flag()) | (data.is_mutual_contact() ? Flag::MutualContact : Flag()) + | (data.is_apply_min_photo() ? Flag() : Flag::DiscardMinPhoto) : Flag()); result->setFlags((result->flags() & ~flagsMask) | flagsSet); if (minimal) { @@ -510,7 +512,7 @@ not_null Session::processUser(const MTPUser &data) { : result->nameOrPhone; result->setName(fname, lname, pname, uname); - if (!minimal || data.is_apply_min_photo()) { + if (!minimal || result->applyMinPhoto()) { if (const auto photo = data.vphoto()) { result->setPhoto(*photo); } else { diff --git a/Telegram/SourceFiles/data/data_user.h b/Telegram/SourceFiles/data/data_user.h index c313bdded..be0bbf746 100644 --- a/Telegram/SourceFiles/data/data_user.h +++ b/Telegram/SourceFiles/data/data_user.h @@ -36,6 +36,7 @@ enum class UserDataFlag { PhoneCallsPrivate = (1 << 9), Support = (1 << 10), CanPinMessages = (1 << 11), + DiscardMinPhoto = (1 << 12), }; inline constexpr bool is_flag_type(UserDataFlag) { return true; }; using UserDataFlags = base::flags; @@ -108,6 +109,9 @@ public: // Duplicated in Data::CanWriteValue(). return !isInaccessible() && !isRepliesChat(); } + [[nodiscard]] bool applyMinPhoto() const { + return !(flags() & UserDataFlag::DiscardMinPhoto); + } [[nodiscard]] bool canShareThisContact() const; [[nodiscard]] bool canAddContact() const {