mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 13:47:05 +02:00
Avoid unnecessary saved dialogs load requests.
This commit is contained in:
parent
a4f4e4564a
commit
a30d0eccda
2 changed files with 30 additions and 2 deletions
|
@ -28,7 +28,8 @@ SavedMessages::SavedMessages(not_null<Session*> owner)
|
|||
, _chatsList(
|
||||
&owner->session(),
|
||||
FilterId(),
|
||||
owner->maxPinnedChatsLimitValue(this)) {
|
||||
owner->maxPinnedChatsLimitValue(this))
|
||||
, _loadMore([=] { sendLoadMoreRequests(); }) {
|
||||
}
|
||||
|
||||
SavedMessages::~SavedMessages() = default;
|
||||
|
@ -60,6 +61,16 @@ not_null<SavedSublist*> SavedMessages::sublist(not_null<PeerData*> peer) {
|
|||
}
|
||||
|
||||
void SavedMessages::loadMore() {
|
||||
_loadMoreScheduled = true;
|
||||
_loadMore.call();
|
||||
}
|
||||
|
||||
void SavedMessages::loadMore(not_null<SavedSublist*> sublist) {
|
||||
_loadMoreSublistsScheduled.emplace(sublist);
|
||||
_loadMore.call();
|
||||
}
|
||||
|
||||
void SavedMessages::sendLoadMore() {
|
||||
if (_loadMoreRequestId || _chatsList.loaded()) {
|
||||
return;
|
||||
} else if (!_pinnedLoaded) {
|
||||
|
@ -102,7 +113,7 @@ void SavedMessages::loadPinned() {
|
|||
}).send();
|
||||
}
|
||||
|
||||
void SavedMessages::loadMore(not_null<SavedSublist*> sublist) {
|
||||
void SavedMessages::sendLoadMore(not_null<SavedSublist*> sublist) {
|
||||
if (_loadMoreRequests.contains(sublist) || sublist->isFullLoaded()) {
|
||||
return;
|
||||
}
|
||||
|
@ -233,6 +244,15 @@ void SavedMessages::apply(
|
|||
}
|
||||
}
|
||||
|
||||
void SavedMessages::sendLoadMoreRequests() {
|
||||
if (_loadMoreScheduled) {
|
||||
sendLoadMore();
|
||||
}
|
||||
for (const auto sublist : base::take(_loadMoreSublistsScheduled)) {
|
||||
sendLoadMore(sublist);
|
||||
}
|
||||
}
|
||||
|
||||
void SavedMessages::apply(const MTPDupdatePinnedSavedDialogs &update) {
|
||||
const auto list = update.vorder();
|
||||
if (!list) {
|
||||
|
|
|
@ -41,6 +41,10 @@ private:
|
|||
void loadPinned();
|
||||
void apply(const MTPmessages_SavedDialogs &result, bool pinned);
|
||||
|
||||
void sendLoadMore();
|
||||
void sendLoadMore(not_null<SavedSublist*> sublist);
|
||||
void sendLoadMoreRequests();
|
||||
|
||||
const not_null<Session*> _owner;
|
||||
|
||||
Dialogs::MainList _chatsList;
|
||||
|
@ -56,6 +60,10 @@ private:
|
|||
MsgId _offsetId = 0;
|
||||
PeerData *_offsetPeer = nullptr;
|
||||
|
||||
SingleQueuedInvokation _loadMore;
|
||||
base::flat_set<not_null<SavedSublist*>> _loadMoreSublistsScheduled;
|
||||
bool _loadMoreScheduled = false;
|
||||
|
||||
bool _pinnedLoaded = false;
|
||||
bool _unsupported = false;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue