From 634687881aca111264dbdaa416dbada8a61e610b Mon Sep 17 00:00:00 2001 From: John Preston Date: Sat, 30 Dec 2023 19:04:24 +0400 Subject: [PATCH] Fix loading of saved sublist histories. --- Telegram/SourceFiles/data/data_saved_messages.cpp | 1 + Telegram/SourceFiles/data/data_saved_sublist.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/data/data_saved_messages.cpp b/Telegram/SourceFiles/data/data_saved_messages.cpp index 9c67d4159..39ee85fa8 100644 --- a/Telegram/SourceFiles/data/data_saved_messages.cpp +++ b/Telegram/SourceFiles/data/data_saved_messages.cpp @@ -182,6 +182,7 @@ void SavedMessages::loadMore(not_null sublist) { sublist->setFullLoaded(); _loadMoreRequests.remove(sublist); }).send(); + _loadMoreRequests[sublist] = requestId; } } // namespace Data diff --git a/Telegram/SourceFiles/data/data_saved_sublist.cpp b/Telegram/SourceFiles/data/data_saved_sublist.cpp index 1f2a00b11..2d129a5f6 100644 --- a/Telegram/SourceFiles/data/data_saved_sublist.cpp +++ b/Telegram/SourceFiles/data/data_saved_sublist.cpp @@ -134,12 +134,20 @@ void SavedSublist::append( _fullCount = fullCount; if (items.empty()) { setFullLoaded(); - } else if (!_items.empty()) { + } else if (_items.empty()) { + _items = std::move(items); + setChatListTimeId(_items.front()->date()); + _changed.fire({}); + } else if (_items.back()->id > items.front()->id) { _items.insert(end(_items), begin(items), end(items)); _changed.fire({}); } else { - _items = std::move(items); - setChatListTimeId(_items.front()->date()); + _items.insert(end(_items), begin(items), end(items)); + ranges::stable_sort( + _items, + ranges::greater(), + &HistoryItem::id); + ranges::unique(_items, ranges::greater(), &HistoryItem::id); _changed.fire({}); } }