mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 15:04:57 +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:
@@ -302,6 +302,16 @@ Session::Session(not_null<Main::Session*> session)
|
||||
}
|
||||
}, _lifetime);
|
||||
|
||||
_reactions->myTagRenamed(
|
||||
) | rpl::start_with_next([=](const ReactionId &id) {
|
||||
const auto i = _viewsByTag.find(id);
|
||||
if (i != end(_viewsByTag)) {
|
||||
for (const auto &view : i->second) {
|
||||
notifyItemDataChange(view->data());
|
||||
}
|
||||
}
|
||||
}, _lifetime);
|
||||
|
||||
Spellchecker::HighlightReady(
|
||||
) | rpl::start_with_next([=](uint64 processId) {
|
||||
highlightProcessDone(processId);
|
||||
@@ -531,6 +541,8 @@ not_null<UserData*> Session::processUser(const MTPUser &data) {
|
||||
| Flag::BotInlineGeo
|
||||
| Flag::Premium
|
||||
| Flag::Support
|
||||
| Flag::SomeRequirePremiumToWrite
|
||||
| Flag::RequirePremiumToWriteKnown
|
||||
| (!minimal
|
||||
? Flag::Contact
|
||||
| Flag::MutualContact
|
||||
@@ -551,10 +563,20 @@ not_null<UserData*> Session::processUser(const MTPUser &data) {
|
||||
| (data.is_bot_inline_geo() ? Flag::BotInlineGeo : Flag())
|
||||
| (data.is_premium() ? Flag::Premium : Flag())
|
||||
| (data.is_support() ? Flag::Support : Flag())
|
||||
| (data.is_contact_require_premium()
|
||||
? (Flag::SomeRequirePremiumToWrite
|
||||
| (result->someRequirePremiumToWrite()
|
||||
? (result->requirePremiumToWriteKnown()
|
||||
? Flag::RequirePremiumToWriteKnown
|
||||
: Flag())
|
||||
: Flag()))
|
||||
: Flag())
|
||||
| (!minimal
|
||||
? (data.is_contact() ? Flag::Contact : Flag())
|
||||
| (data.is_mutual_contact() ? Flag::MutualContact : Flag())
|
||||
| (data.is_apply_min_photo() ? Flag() : Flag::DiscardMinPhoto)
|
||||
| (data.is_apply_min_photo()
|
||||
? Flag()
|
||||
: Flag::DiscardMinPhoto)
|
||||
| (data.is_stories_hidden() ? Flag::StoriesHidden : Flag())
|
||||
: Flag());
|
||||
result->setFlags((result->flags() & ~flagsMask) | flagsSet);
|
||||
@@ -730,14 +752,9 @@ not_null<UserData*> Session::processUser(const MTPUser &data) {
|
||||
}
|
||||
|
||||
if (status && !minimal) {
|
||||
const auto oldOnlineTill = result->onlineTill;
|
||||
const auto newOnlineTill = ApiWrap::OnlineTillFromStatus(
|
||||
*status,
|
||||
oldOnlineTill);
|
||||
if (oldOnlineTill != newOnlineTill) {
|
||||
result->onlineTill = newOnlineTill;
|
||||
const auto lastseen = LastseenFromMTP(*status, result->lastseen());
|
||||
if (result->updateLastseen(lastseen)) {
|
||||
flags |= UpdateFlag::OnlineStatus;
|
||||
session().data().maybeStopWatchForOffline(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1108,7 +1125,8 @@ void Session::watchForOffline(not_null<UserData*> user, TimeId now) {
|
||||
if (!Data::IsUserOnline(user, now)) {
|
||||
return;
|
||||
}
|
||||
const auto till = user->onlineTill;
|
||||
const auto lastseen = user->lastseen();
|
||||
const auto till = lastseen.onlineTill();
|
||||
const auto &[i, ok] = _watchingForOffline.emplace(user, till);
|
||||
if (!ok) {
|
||||
if (i->second == till) {
|
||||
@@ -1116,7 +1134,7 @@ void Session::watchForOffline(not_null<UserData*> user, TimeId now) {
|
||||
}
|
||||
i->second = till;
|
||||
}
|
||||
const auto timeout = Data::OnlineChangeTimeout(till, now);
|
||||
const auto timeout = Data::OnlineChangeTimeout(lastseen, now);
|
||||
const auto fires = _watchForOfflineTimer.isActive()
|
||||
? _watchForOfflineTimer.remainingTime()
|
||||
: -1;
|
||||
@@ -4451,7 +4469,7 @@ void Session::serviceNotification(
|
||||
MTPstring(), // username
|
||||
MTP_string("42777"),
|
||||
MTP_userProfilePhotoEmpty(),
|
||||
MTP_userStatusRecently(),
|
||||
MTP_userStatusRecently(MTP_flags(0)),
|
||||
MTPint(), // bot_info_version
|
||||
MTPVector<MTPRestrictionReason>(),
|
||||
MTPstring(), // bot_inline_placeholder
|
||||
@@ -4664,6 +4682,28 @@ rpl::producer<not_null<PeerData*>> Session::peerDecorationsUpdated() const {
|
||||
return _peerDecorationsUpdated.events();
|
||||
}
|
||||
|
||||
void Session::viewTagsChanged(
|
||||
not_null<ViewElement*> view,
|
||||
std::vector<Data::ReactionId> &&was,
|
||||
std::vector<Data::ReactionId> &&now) {
|
||||
for (const auto &id : now) {
|
||||
const auto i = ranges::remove(was, id);
|
||||
if (i != end(was)) {
|
||||
was.erase(i, end(was));
|
||||
} else {
|
||||
_viewsByTag[id].emplace(view);
|
||||
}
|
||||
}
|
||||
for (const auto &id : was) {
|
||||
const auto i = _viewsByTag.find(id);
|
||||
if (i != end(_viewsByTag)
|
||||
&& i->second.remove(view)
|
||||
&& i->second.empty()) {
|
||||
_viewsByTag.erase(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Session::clearLocalStorage() {
|
||||
_cache->close();
|
||||
_cache->clear();
|
||||
|
||||
Reference in New Issue
Block a user