diff --git a/Telegram/SourceFiles/data/data_saved_messages.cpp b/Telegram/SourceFiles/data/data_saved_messages.cpp index d81f97fe5..9a4f4441f 100644 --- a/Telegram/SourceFiles/data/data_saved_messages.cpp +++ b/Telegram/SourceFiles/data/data_saved_messages.cpp @@ -277,7 +277,7 @@ void SavedMessages::apply(const MTPDupdatePinnedSavedDialogs &update) { if (!ranges::none_of(order, notLoaded)) { loadPinned(); } else { - _chatsList.pinned()->applyList(_owner, order); + _chatsList.pinned()->applyList(this, order); _owner->notifyPinnedDialogsOrderUpdated(); } } diff --git a/Telegram/SourceFiles/dialogs/dialogs_pinned_list.cpp b/Telegram/SourceFiles/dialogs/dialogs_pinned_list.cpp index 1382201a8..cac85b3b3 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_pinned_list.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_pinned_list.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "dialogs/dialogs_pinned_list.h" +#include "data/data_saved_messages.h" #include "dialogs/dialogs_key.h" #include "dialogs/dialogs_entry.h" #include "history/history.h" @@ -86,6 +87,8 @@ void PinnedList::clear() { void PinnedList::applyList( not_null owner, const QVector &list) { + Expects(this != owner->savedMessages().chatsList()->pinned()); + clear(); for (const auto &peer : list) { peer.match([&](const MTPDdialogPeer &data) { @@ -98,9 +101,28 @@ void PinnedList::applyList( } } +void PinnedList::applyList( + not_null sublistsOwner, + const QVector &list) { + Expects(this == sublistsOwner->chatsList()->pinned()); + + clear(); + for (const auto &peer : list) { + peer.match([&](const MTPDdialogPeer &data) { + if (const auto peerId = peerFromMTP(data.vpeer())) { + const auto peer = sublistsOwner->owner().peer(peerId); + addPinned(sublistsOwner->sublist(peer)); + } + }, [](const MTPDdialogPeerFolder &data) { + }); + } +} + void PinnedList::applyList( not_null forum, const QVector &list) { + Expects(this == forum->topicsList()->pinned()); + clear(); for (const auto &topicId : list) { addPinned(forum->topicFor(topicId.v)); diff --git a/Telegram/SourceFiles/dialogs/dialogs_pinned_list.h b/Telegram/SourceFiles/dialogs/dialogs_pinned_list.h index ce18ae9c3..92a711089 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_pinned_list.h +++ b/Telegram/SourceFiles/dialogs/dialogs_pinned_list.h @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL class History; namespace Data { +class SavedMessages; class Session; class Forum; } // namespace Data @@ -36,6 +37,9 @@ public: void applyList( not_null owner, const QVector &list); + void applyList( + not_null sublistsOwner, + const QVector &list); void applyList( not_null forum, const QVector &list);