Correctly apply photos from "min" users.

This commit is contained in:
John Preston 2021-09-09 16:59:36 +03:00
parent 54e76c0b71
commit 28be89f7c3
2 changed files with 7 additions and 1 deletions

View file

@ -415,6 +415,7 @@ not_null<UserData*> 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<UserData*> 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<UserData*> 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 {

View file

@ -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<UserDataFlag>;
@ -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 {