Improvements for #1071

This commit is contained in:
the-djmaze 2023-06-13 13:44:38 +02:00
parent 3a3b2f0771
commit 5bf0f3b562
2 changed files with 53 additions and 58 deletions

View file

@ -9,51 +9,11 @@ import { SUB_QUERY_PREFIX } from 'Common/Links';
import { AppUserStore } from 'Stores/User/App'; import { AppUserStore } from 'Stores/User/App';
import { SettingsUserStore } from 'Stores/User/Settings'; import { SettingsUserStore } from 'Stores/User/Settings';
import { FolderUserStore } from 'Stores/User/Folder';
import { AbstractFetchRemote } from 'Remote/AbstractFetch'; import { AbstractFetchRemote } from 'Remote/AbstractFetch';
class RemoteUserFetch extends AbstractFetchRemote { class RemoteUserFetch extends AbstractFetchRemote {
/**
* @param {Function} fCallback
* @param {object} params
* @param {boolean=} bSilent = false
*/
messageList(fCallback, params) {
const
// folder = getFolderFromCacheList(params.folder.fullName),
folder = getFolderFromCacheList(params.folder),
folderETag = folder?.etag || '';
params = Object.assign({
offset: 0,
limit: SettingsUserStore.messagesPerPage(),
search: '',
uidNext: folder?.uidNext || 0, // Used to check for new messages
sort: FolderUserStore.sortMode()
}, params);
if (AppUserStore.threadsAllowed() && SettingsUserStore.useThreads()) {
params.useThreads = 1;
} else {
params.threadUid = 0;
}
let sGetAdd = '';
if (folderETag) {
params.hash = folderETag + '-' + SettingsGet('accountHash');
sGetAdd = 'MessageList/' + SUB_QUERY_PREFIX + '/' + b64EncodeJSONSafe(params);
params = {};
}
this.abort('MessageList', 'reload').request('MessageList',
fCallback,
params,
60000, // 60 seconds before aborting
sGetAdd
);
}
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullName * @param {string} sFolderFullName

View file

@ -27,6 +27,11 @@ import { SettingsUserStore } from 'Stores/User/Settings';
import Remote from 'Remote/User/Fetch'; import Remote from 'Remote/User/Fetch';
import { b64EncodeJSONSafe } from 'Common/Utils';
import { SettingsGet } from 'Common/Globals';
import { SUB_QUERY_PREFIX } from 'Common/Links';
import { AppUserStore } from 'Stores/User/App';
const const
isChecked = item => item.checked(), isChecked = item => item.checked(),
replaceHash = hash => { replaceHash = hash => {
@ -165,15 +170,19 @@ MessagelistUserStore.canAutoSelect = () =>
&& !disableAutoSelect() && !disableAutoSelect()
&& SettingsUserStore.usePreviewPane(); && SettingsUserStore.usePreviewPane();
let prevFolderName;
/** /**
* @param {boolean=} bDropPagePosition = false * @param {boolean=} bDropPagePosition = false
* @param {boolean=} bDropCurrentFolderCache = false * @param {boolean=} bDropCurrentFolderCache = false
*/ */
MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCache = false) => { MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCache = false) => {
let iOffset = (MessagelistUserStore.page() - 1) * SettingsUserStore.messagesPerPage(); let iOffset = (MessagelistUserStore.page() - 1) * SettingsUserStore.messagesPerPage(),
folderName = FolderUserStore.currentFolderFullName();
// folderName = FolderUserStore.currentFolder() ? self.currentFolder().fullName : '');
if (bDropCurrentFolderCache) { if (bDropCurrentFolderCache) {
setFolderETag(FolderUserStore.currentFolderFullName(), ''); setFolderETag(folderName, '');
} }
if (bDropPagePosition) { if (bDropPagePosition) {
@ -191,20 +200,36 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
); );
} }
if (prevFolderName != folderName) {
prevFolderName = folderName;
MessagelistUserStore([]);
}
MessagelistUserStore.loading(true); MessagelistUserStore.loading(true);
Remote.messageList(
(iError, oData, bCached) => { let sGetAdd = '',
// folder = getFolderFromCacheList(folderName.fullName),
folder = getFolderFromCacheList(folderName),
folderETag = folder?.etag || '',
params = {
folder: folderName,
offset: iOffset,
limit: SettingsUserStore.messagesPerPage(),
uidNext: folder?.uidNext || 0, // Used to check for new messages
sort: FolderUserStore.sortMode(),
search: MessagelistUserStore.listSearch()
},
fCallback = (iError, oData, bCached) => {
let error = ''; let error = '';
if (iError) { if (iError) {
if ('reload' != oData?.reason) { if ('reload' != oData?.reason) {
error = getNotification(iError); error = getNotification(iError);
MessagelistUserStore.loading(false); MessagelistUserStore.loading(false);
}
// if (Notifications.RequestAborted !== iError) { // if (Notifications.RequestAborted !== iError) {
// MessagelistUserStore([]); // MessagelistUserStore([]);
// } // }
// if (oData.message) { error = oData.message + error; } // if (oData.message) { error = oData.message + error; }
// if (oData.reason) { error = oData.reason + " " + error; } }
} else { } else {
const collection = MessageCollectionModel.reviveFromJson(oData.Result, bCached); const collection = MessageCollectionModel.reviveFromJson(oData.Result, bCached);
if (collection) { if (collection) {
@ -284,15 +309,25 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
MessagelistUserStore.loading(false); MessagelistUserStore.loading(false);
} }
MessagelistUserStore.error(error); MessagelistUserStore.error(error);
}, };
{
// folder: FolderUserStore.currentFolder() ? self.currentFolder().fullName : ''), if (AppUserStore.threadsAllowed() && SettingsUserStore.useThreads()) {
folder: FolderUserStore.currentFolderFullName(), params.useThreads = 1;
offset: iOffset, params.threadUid = MessagelistUserStore.threadUid();
limit: SettingsUserStore.messagesPerPage(), } else {
search: MessagelistUserStore.listSearch(), params.threadUid = 0;
threadUid: MessagelistUserStore.threadUid()
} }
if (folderETag) {
params.hash = folderETag + '-' + SettingsGet('accountHash');
sGetAdd = 'MessageList/' + SUB_QUERY_PREFIX + '/' + b64EncodeJSONSafe(params);
params = {};
}
Remote.abort('MessageList', 'reload').request('MessageList',
fCallback,
params,
60000, // 60 seconds before aborting
sGetAdd
); );
}; };