From c2b4b1f238239b6d57acbc7e03748411c4f14f3f Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 22 Nov 2022 13:20:18 +0100 Subject: [PATCH] Added idea messagelist infinite scroll --- dev/Stores/User/Messagelist.js | 8 ++++++-- dev/View/User/MailBox/MessageList.js | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/dev/Stores/User/Messagelist.js b/dev/Stores/User/Messagelist.js index 274917f03..4c7d9c425 100644 --- a/dev/Stores/User/Messagelist.js +++ b/dev/Stores/User/Messagelist.js @@ -169,7 +169,7 @@ MessagelistUserStore.canAutoSelect = () => * @param {boolean=} bDropPagePosition = false * @param {boolean=} bDropCurrentFolderCache = false */ -MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCache = false) => { +MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCache = false, bAppend = false) => { let iOffset = (MessagelistUserStore.page() - 1) * SettingsUserStore.messagesPerPage(); if (bDropCurrentFolderCache) { @@ -264,7 +264,11 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach disableAutoSelect(true); - MessagelistUserStore(collection); + if (bAppend) { + collection.forEach(item => MessagelistUserStore.push(item)); + } else { + MessagelistUserStore(collection); + } MessagelistUserStore.isIncomplete(false); if (folder && (bCached || unreadCountChange || SettingsUserStore.useThreads())) { diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index 69fcbecce..3ecdb742e 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -254,10 +254,11 @@ export class MailMessageList extends AbstractViewRight { } }); +/* MessagelistUserStore.endHash.subscribe((() => this.selector.scrollToFocused() ).throttle(50)); - +*/ decorateKoCommands(this, { downloadCommand: canBeMovedHelper, forwardCommand: canBeMovedHelper, @@ -535,6 +536,21 @@ export class MailMessageList extends AbstractViewRight { } }); + b_content.addEventListener( + 'scroll', + (() => { + if (b_content.scrollTop >= (b_content.scrollTopMax || (b_content.scrollHeight - b_content.clientTop))) { + // Load more messages in the MessageList + let page = MessagelistUserStore.page(); + if (page < MessagelistUserStore.pageCount()) { + MessagelistUserStore.page(1 + page); + MessagelistUserStore.reload(false, false, true); + } + } + }).debounce(1000), + {passive:true} + ); + // initUploaderForAppend if (Settings.app('allowAppendMessage')) {