diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 847d4a530f..591f9f5821 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -1003,7 +1003,7 @@ void ApiWrap::requestPinnedDialogs(Data::Folder *folder) { result.match([&](const MTPDmessages_peerDialogs &data) { _session->data().processUsers(data.vusers()); _session->data().processChats(data.vchats()); - _session->data().clearPinnedChats(folder, FilterId()); + _session->data().clearPinnedChats(folder); _session->data().applyDialogs( folder, data.vmessages().v, diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 3720ac5f16..23613af95f 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -1557,8 +1557,6 @@ void Session::applyDialog( int Session::pinnedChatsCount( Data::Folder *folder, FilterId filterId) const { - Expects(!folder || !filterId); - if (!filterId) { return pinnedChatsOrder(folder, filterId).size(); } @@ -1591,7 +1589,7 @@ const std::vector &Session::pinnedChatsOrder( return list->pinned()->order(); } -void Session::clearPinnedChats(Data::Folder *folder, FilterId filterId) { +void Session::clearPinnedChats(Data::Folder *folder) { chatsList(folder)->pinned()->clear(); } diff --git a/Telegram/SourceFiles/data/data_session.h b/Telegram/SourceFiles/data/data_session.h index fecc1fc87a..4b1eb90255 100644 --- a/Telegram/SourceFiles/data/data_session.h +++ b/Telegram/SourceFiles/data/data_session.h @@ -371,7 +371,7 @@ public: const Dialogs::Key &key, FilterId filterId, bool pinned); - void clearPinnedChats(Data::Folder *folder, FilterId filterId); + void clearPinnedChats(Data::Folder *folder); void applyPinnedChats( Data::Folder *folder, const QVector &list); diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index f8de2ed163..66de48b43a 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -2999,11 +2999,18 @@ void InnerWidget::setupShortcuts() { Command::ChatPinned4, Command::ChatPinned5, }; - auto &&pinned = ranges::view::zip(kPinned, ranges::view::ints(0, ranges::unreachable)); + auto &&pinned = ranges::view::zip( + kPinned, + ranges::view::ints(0, ranges::unreachable)); for (const auto [command, index] : pinned) { request->check(command) && request->handle([=, index = index] { - const auto list = session().data().chatsList()->indexed(); - const auto count = Dialogs::PinnedDialogsCount(_filterId, list); + const auto list = (_filterId + ? session().data().chatsFilters().chatsList(_filterId) + : session().data().chatsList() + )->indexed(); + const auto count = Dialogs::PinnedDialogsCount( + _filterId, + list); if (index >= count) { return false; }