diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index e2828b48f..8e999053b 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -441,6 +441,19 @@ void History::destroyMessage(not_null item) { } } +void History::unpinAllMessages() { + session().storage().remove( + Storage::SharedMediaRemoveAll( + peer->id, + Storage::SharedMediaType::Pinned)); + peer->setHasPinnedMessages(false); + for (const auto &message : _messages) { + if (message->isPinned()) { + message->setIsPinned(false); + } + } +} + not_null History::addNewItem( not_null item, bool unread) { diff --git a/Telegram/SourceFiles/history/history.h b/Telegram/SourceFiles/history/history.h index 30b09844b..ebb5e0181 100644 --- a/Telegram/SourceFiles/history/history.h +++ b/Telegram/SourceFiles/history/history.h @@ -113,6 +113,8 @@ public: } void destroyMessage(not_null item); + void unpinAllMessages(); + HistoryItem *addNewMessage( const MTPMessage &msg, MTPDmessage_ClientFlags clientFlags, diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 35da3941f..d105b7428 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -1182,20 +1182,16 @@ void UnpinAllMessages( Ui::show(Box(tr::lng_pinned_unpin_all_sure(tr::now), tr::lng_pinned_unpin(tr::now), crl::guard(navigation, [=] { Ui::hideLayer(); const auto api = &history->session().api(); - const auto peer = history->peer; const auto sendRequest = [=](auto self) -> void { api->request(MTPmessages_UnpinAllMessages( - peer->input + history->peer->input )).done([=](const MTPmessages_AffectedHistory &result) { + const auto peer = history->peer; const auto offset = api->applyAffectedHistory(peer, result); if (offset > 0) { self(self); } else { - peer->session().storage().remove( - Storage::SharedMediaRemoveAll( - peer->id, - Storage::SharedMediaType::Pinned)); - peer->setHasPinnedMessages(false); + history->unpinAllMessages(); } }).send(); };