mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-31 21:19:21 +03:00
Revamp mailbox management so that reloading of the whole folder tree is not needed
This commit is contained in:
parent
5fdc38a40d
commit
2719f08e26
8 changed files with 67 additions and 60 deletions
|
|
@ -5,7 +5,7 @@ import { ClientSideKeyName, FolderMetadataKeys } from 'Common/EnumsUser';
|
|||
import { Settings } from 'Common/Globals';
|
||||
import { getNotification } from 'Common/Translator';
|
||||
|
||||
import { setFolder, removeFolderFromCacheList } from 'Common/Cache';
|
||||
import { setFolder, getFolderFromCacheList, removeFolderFromCacheList } from 'Common/Cache';
|
||||
import { Capa } from 'Common/Enums';
|
||||
import { defaultOptionsAfterRender } from 'Common/Utils';
|
||||
import { initOnStartOrLangChange, i18n } from 'Common/Translator';
|
||||
|
|
@ -71,21 +71,27 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
|||
|
||||
if (nameToEdit && folder.name() !== nameToEdit) {
|
||||
Local.set(ClientSideKeyName.FoldersLashHash, '');
|
||||
Remote
|
||||
.post('FolderRename', FolderUserStore.foldersRenaming, {
|
||||
Remote.abort('Folders').post('FolderRename', FolderUserStore.foldersRenaming, {
|
||||
Folder: folder.fullName,
|
||||
NewFolderName: nameToEdit
|
||||
})
|
||||
.then(data => {
|
||||
folder.name(nameToEdit/*data.Name*/);
|
||||
if (folder.subFolders.length) {
|
||||
Remote.foldersReloadWithTimeout();
|
||||
// rename all subfolders folder.delimiter
|
||||
Remote.setTrigger(FolderUserStore.foldersLoading, true);
|
||||
clearTimeout(Remote.foldersTimeout);
|
||||
Remote.foldersTimeout = setTimeout(() => Remote.foldersReload(), 500);
|
||||
// TODO: rename all subfolders with folder.delimiter to prevent reload?
|
||||
} else {
|
||||
removeFolderFromCacheList(folder.fullName);
|
||||
data = data.Result;
|
||||
folder.fullName = data.FullName;
|
||||
setFolder(folder);
|
||||
/*
|
||||
const folder = getFolderFromCacheList(folder.parentName);
|
||||
var collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'});
|
||||
console.log((folder ? folder.subFolders : FolderUserStore.folderList).sort(collator.compare));
|
||||
*/
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
|
|
@ -131,14 +137,19 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
|||
if (folderToRemove) {
|
||||
Local.set(ClientSideKeyName.FoldersLashHash, '');
|
||||
|
||||
// rl.app.foldersPromisesActionHelper
|
||||
Remote.abort('Folders').post('FolderDelete', FolderUserStore.foldersDeleting, {
|
||||
Folder: folderToRemove.fullName
|
||||
}).then(
|
||||
() => {
|
||||
folderToRemove.selectable(false)
|
||||
removeFolderFromCacheList(folderToRemove.fullName);
|
||||
FolderUserStore.folderList(FolderUserStore.folderList.filter(folder => folder !== folderToRemove));
|
||||
// folderToRemove.flags.push('\\nonexistent');
|
||||
folderToRemove.selectable(false);
|
||||
// folderToRemove.subscribed(false);
|
||||
// folderToRemove.checkable(false);
|
||||
if (!folderToRemove.subFolders.length) {
|
||||
removeFolderFromCacheList(folderToRemove.fullName);
|
||||
const folder = getFolderFromCacheList(folderToRemove.parentName);
|
||||
(folder ? folder.subFolders : FolderUserStore.folderList).remove(folderToRemove);
|
||||
}
|
||||
},
|
||||
error => {
|
||||
FolderUserStore.folderListError(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue