mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-30 17:16:46 +00:00
Merge v4.14.13
# Conflicts: # Telegram/Resources/winrc/Telegram.rc # Telegram/Resources/winrc/Updater.rc # Telegram/SourceFiles/core/version.h # Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp # Telegram/SourceFiles/history/view/media/history_view_photo.cpp # Telegram/SourceFiles/history/view/reactions/history_view_reactions_selector.cpp # Telegram/SourceFiles/mainwidget.cpp # Telegram/lib_ui
This commit is contained in:
@@ -39,6 +39,29 @@ using UpdateFlag = Data::PeerUpdate::Flag;
|
||||
|
||||
BotInfo::BotInfo() = default;
|
||||
|
||||
Data::LastseenStatus LastseenFromMTP(
|
||||
const MTPUserStatus &status,
|
||||
Data::LastseenStatus currentStatus) {
|
||||
return status.match([](const MTPDuserStatusEmpty &data) {
|
||||
return Data::LastseenStatus::LongAgo();
|
||||
}, [&](const MTPDuserStatusRecently &data) {
|
||||
return currentStatus.isLocalOnlineValue()
|
||||
? Data::LastseenStatus::OnlineTill(
|
||||
currentStatus.onlineTill(),
|
||||
true,
|
||||
data.is_by_me())
|
||||
: Data::LastseenStatus::Recently(data.is_by_me());
|
||||
}, [](const MTPDuserStatusLastWeek &data) {
|
||||
return Data::LastseenStatus::WithinWeek(data.is_by_me());
|
||||
}, [](const MTPDuserStatusLastMonth &data) {
|
||||
return Data::LastseenStatus::WithinMonth(data.is_by_me());
|
||||
}, [](const MTPDuserStatusOnline& data) {
|
||||
return Data::LastseenStatus::OnlineTill(data.vexpires().v);
|
||||
}, [](const MTPDuserStatusOffline &data) {
|
||||
return Data::LastseenStatus::OnlineTill(data.vwas_online().v);
|
||||
});
|
||||
}
|
||||
|
||||
UserData::UserData(not_null<Data::Session*> owner, PeerId id)
|
||||
: PeerData(owner, id)
|
||||
, _flags((id == owner->session().userPeerId()) ? Flag::Self : Flag(0)) {
|
||||
@@ -59,6 +82,19 @@ void UserData::setIsContact(bool is) {
|
||||
}
|
||||
}
|
||||
|
||||
Data::LastseenStatus UserData::lastseen() const {
|
||||
return _lastseen;
|
||||
}
|
||||
|
||||
bool UserData::updateLastseen(Data::LastseenStatus value) {
|
||||
if (_lastseen == value) {
|
||||
return false;
|
||||
}
|
||||
_lastseen = value;
|
||||
owner().maybeStopWatchForOffline(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
// see Serialize::readPeer as well
|
||||
void UserData::setPhoto(const MTPUserProfilePhoto &photo) {
|
||||
photo.match([&](const MTPDuserProfilePhoto &data) {
|
||||
@@ -276,11 +312,14 @@ void UserData::setNameOrPhone(const QString &newNameOrPhone) {
|
||||
void UserData::madeAction(TimeId when) {
|
||||
if (isBot() || isServiceUser() || when <= 0) {
|
||||
return;
|
||||
} else if (onlineTill <= 0 && -onlineTill < when) {
|
||||
onlineTill = -when - kSetOnlineAfterActivity;
|
||||
session().changes().peerUpdated(this, UpdateFlag::OnlineStatus);
|
||||
} else if (onlineTill > 0 && onlineTill < when + 1) {
|
||||
onlineTill = when + kSetOnlineAfterActivity;
|
||||
}
|
||||
const auto till = lastseen().onlineTill();
|
||||
if (till < when + 1
|
||||
&& updateLastseen(
|
||||
Data::LastseenStatus::OnlineTill(
|
||||
when + kSetOnlineAfterActivity,
|
||||
!till || lastseen().isLocalOnlineValue(),
|
||||
lastseen().isHiddenByMe()))) {
|
||||
session().changes().peerUpdated(this, UpdateFlag::OnlineStatus);
|
||||
}
|
||||
}
|
||||
@@ -368,6 +407,26 @@ bool UserData::hasStoriesHidden() const {
|
||||
return (flags() & UserDataFlag::StoriesHidden);
|
||||
}
|
||||
|
||||
bool UserData::someRequirePremiumToWrite() const {
|
||||
return (flags() & UserDataFlag::SomeRequirePremiumToWrite);
|
||||
}
|
||||
|
||||
bool UserData::meRequiresPremiumToWrite() const {
|
||||
return (flags() & UserDataFlag::MeRequiresPremiumToWrite);
|
||||
}
|
||||
|
||||
bool UserData::requirePremiumToWriteKnown() const {
|
||||
return (flags() & UserDataFlag::RequirePremiumToWriteKnown);
|
||||
}
|
||||
|
||||
bool UserData::canSendIgnoreRequirePremium() const {
|
||||
return !isInaccessible() && !isRepliesChat();
|
||||
}
|
||||
|
||||
bool UserData::readDatesPrivate() const {
|
||||
return (flags() & UserDataFlag::ReadDatesPrivate);
|
||||
}
|
||||
|
||||
bool UserData::canAddContact() const {
|
||||
return canShareThisContact() && !isContact();
|
||||
}
|
||||
@@ -470,15 +529,25 @@ void ApplyUserUpdate(not_null<UserData*> user, const MTPDuserFull &update) {
|
||||
| Flag::PhoneCallsPrivate
|
||||
| Flag::CanReceiveGifts
|
||||
| Flag::CanPinMessages
|
||||
| Flag::VoiceMessagesForbidden;
|
||||
| Flag::VoiceMessagesForbidden
|
||||
| Flag::ReadDatesPrivate
|
||||
| Flag::RequirePremiumToWriteKnown
|
||||
| Flag::MeRequiresPremiumToWrite;
|
||||
user->setFlags((user->flags() & ~mask)
|
||||
| (update.is_phone_calls_private() ? Flag::PhoneCallsPrivate : Flag())
|
||||
| (update.is_phone_calls_private()
|
||||
? Flag::PhoneCallsPrivate
|
||||
: Flag())
|
||||
| (update.is_phone_calls_available() ? Flag::HasPhoneCalls : Flag())
|
||||
| (canReceiveGifts ? Flag::CanReceiveGifts : Flag())
|
||||
| (update.is_can_pin_message() ? Flag::CanPinMessages : Flag())
|
||||
| (update.is_blocked() ? Flag::Blocked : Flag())
|
||||
| (update.is_voice_messages_forbidden()
|
||||
? Flag::VoiceMessagesForbidden
|
||||
: Flag())
|
||||
| (update.is_read_dates_private() ? Flag::ReadDatesPrivate : Flag())
|
||||
| Flag::RequirePremiumToWriteKnown
|
||||
| (update.is_contact_require_premium()
|
||||
? Flag::MeRequiresPremiumToWrite
|
||||
: Flag()));
|
||||
user->setIsBlocked(update.is_blocked());
|
||||
user->setCallsStatus(update.is_phone_calls_private()
|
||||
|
||||
Reference in New Issue
Block a user