FolderFullNameRaw is gone due to UTF8

This commit is contained in:
djmaze 2021-11-30 10:19:43 +01:00
parent f743f0e27a
commit d33ec54c1c
14 changed files with 181 additions and 184 deletions

View file

@ -132,7 +132,7 @@ class AppUser extends AbstractApp {
let iOffset = (MessageUserStore.listPage() - 1) * SettingsUserStore.messagesPerPage(); let iOffset = (MessageUserStore.listPage() - 1) * SettingsUserStore.messagesPerPage();
if (bDropCurrenFolderCache) { if (bDropCurrenFolderCache) {
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), ''); setFolderHash(FolderUserStore.currentFolderFullName(), '');
} }
if (bDropPagePosition) { if (bDropPagePosition) {
@ -167,7 +167,7 @@ class AppUser extends AbstractApp {
MessageUserStore.listLoading(false); MessageUserStore.listLoading(false);
}, },
{ {
Folder: FolderUserStore.currentFolderFullNameRaw(), Folder: FolderUserStore.currentFolderFullName(),
Offset: iOffset, Offset: iOffset,
Limit: SettingsUserStore.messagesPerPage(), Limit: SettingsUserStore.messagesPerPage(),
Search: MessageUserStore.listSearch(), Search: MessageUserStore.listSearch(),
@ -198,12 +198,12 @@ class AppUser extends AbstractApp {
this.moveCache = {}; this.moveCache = {};
} }
messagesMoveHelper(fromFolderFullNameRaw, toFolderFullNameRaw, uidsForMove) { messagesMoveHelper(fromFolderFullName, toFolderFullName, uidsForMove) {
const hash = '$$' + fromFolderFullNameRaw + '$$' + toFolderFullNameRaw + '$$'; const hash = '$$' + fromFolderFullName + '$$' + toFolderFullName + '$$';
if (!this.moveCache[hash]) { if (!this.moveCache[hash]) {
this.moveCache[hash] = { this.moveCache[hash] = {
From: fromFolderFullNameRaw, From: fromFolderFullName,
To: toFolderFullNameRaw, To: toFolderFullName,
Uid: [] Uid: []
}; };
} }
@ -212,44 +212,44 @@ class AppUser extends AbstractApp {
this.messagesMoveTrigger(); this.messagesMoveTrigger();
} }
messagesCopyHelper(sFromFolderFullNameRaw, sToFolderFullNameRaw, aUidForCopy) { messagesCopyHelper(sFromFolderFullName, sToFolderFullName, aUidForCopy) {
Remote.messagesCopy(this.moveOrDeleteResponseHelper, sFromFolderFullNameRaw, sToFolderFullNameRaw, aUidForCopy); Remote.messagesCopy(this.moveOrDeleteResponseHelper, sFromFolderFullName, sToFolderFullName, aUidForCopy);
} }
messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove) { messagesDeleteHelper(sFromFolderFullName, aUidForRemove) {
Remote.messagesDelete(this.moveOrDeleteResponseHelper, sFromFolderFullNameRaw, aUidForRemove); Remote.messagesDelete(this.moveOrDeleteResponseHelper, sFromFolderFullName, aUidForRemove);
} }
moveOrDeleteResponseHelper(iError, oData) { moveOrDeleteResponseHelper(iError, oData) {
if (iError) { if (iError) {
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), ''); setFolderHash(FolderUserStore.currentFolderFullName(), '');
alert(getNotification(iError)); alert(getNotification(iError));
} else if (FolderUserStore.currentFolder()) { } else if (FolderUserStore.currentFolder()) {
if (2 === arrayLength(oData.Result)) { if (2 === arrayLength(oData.Result)) {
setFolderHash(oData.Result[0], oData.Result[1]); setFolderHash(oData.Result[0], oData.Result[1]);
} else { } else {
setFolderHash(FolderUserStore.currentFolderFullNameRaw(), ''); setFolderHash(FolderUserStore.currentFolderFullName(), '');
} }
this.reloadMessageList(!MessageUserStore.list.length); this.reloadMessageList(!MessageUserStore.list.length);
} }
} }
/** /**
* @param {string} sFromFolderFullNameRaw * @param {string} sFromFolderFullName
* @param {Array} aUidForRemove * @param {Array} aUidForRemove
*/ */
deleteMessagesFromFolderWithoutCheck(sFromFolderFullNameRaw, aUidForRemove) { deleteMessagesFromFolderWithoutCheck(sFromFolderFullName, aUidForRemove) {
this.messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove); this.messagesDeleteHelper(sFromFolderFullName, aUidForRemove);
MessageUserStore.removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove); MessageUserStore.removeMessagesFromList(sFromFolderFullName, aUidForRemove);
} }
/** /**
* @param {number} iDeleteType * @param {number} iDeleteType
* @param {string} sFromFolderFullNameRaw * @param {string} sFromFolderFullName
* @param {Array} aUidForRemove * @param {Array} aUidForRemove
* @param {boolean=} bUseFolder = true * @param {boolean=} bUseFolder = true
*/ */
deleteMessagesFromFolder(iDeleteType, sFromFolderFullNameRaw, aUidForRemove, bUseFolder) { deleteMessagesFromFolder(iDeleteType, sFromFolderFullName, aUidForRemove, bUseFolder) {
let oMoveFolder = null, let oMoveFolder = null,
nSetSystemFoldersNotification = null; nSetSystemFoldersNotification = null;
@ -288,32 +288,32 @@ class AppUser extends AbstractApp {
} else if ( } else if (
!bUseFolder || !bUseFolder ||
(FolderType.Trash === iDeleteType && (FolderType.Trash === iDeleteType &&
(sFromFolderFullNameRaw === FolderUserStore.spamFolder() (sFromFolderFullName === FolderUserStore.spamFolder()
|| sFromFolderFullNameRaw === FolderUserStore.trashFolder())) || sFromFolderFullName === FolderUserStore.trashFolder()))
) { ) {
showScreenPopup(AskPopupView, [ showScreenPopup(AskPopupView, [
i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), i18n('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'),
() => { () => {
this.messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove); this.messagesDeleteHelper(sFromFolderFullName, aUidForRemove);
MessageUserStore.removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove); MessageUserStore.removeMessagesFromList(sFromFolderFullName, aUidForRemove);
} }
]); ]);
} else if (oMoveFolder) { } else if (oMoveFolder) {
this.messagesMoveHelper(sFromFolderFullNameRaw, oMoveFolder.fullName, aUidForRemove); this.messagesMoveHelper(sFromFolderFullName, oMoveFolder.fullName, aUidForRemove);
MessageUserStore.removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove, oMoveFolder.fullName); MessageUserStore.removeMessagesFromList(sFromFolderFullName, aUidForRemove, oMoveFolder.fullName);
} }
} }
/** /**
* @param {string} sFromFolderFullNameRaw * @param {string} sFromFolderFullName
* @param {Array} aUidForMove * @param {Array} aUidForMove
* @param {string} sToFolderFullNameRaw * @param {string} sToFolderFullName
* @param {boolean=} bCopy = false * @param {boolean=} bCopy = false
*/ */
moveMessagesToFolder(sFromFolderFullNameRaw, aUidForMove, sToFolderFullNameRaw, bCopy) { moveMessagesToFolder(sFromFolderFullName, aUidForMove, sToFolderFullName, bCopy) {
if (sFromFolderFullNameRaw !== sToFolderFullNameRaw && arrayLength(aUidForMove)) { if (sFromFolderFullName !== sToFolderFullName && arrayLength(aUidForMove)) {
const oFromFolder = getFolderFromCacheList(sFromFolderFullNameRaw), const oFromFolder = getFolderFromCacheList(sFromFolderFullName),
oToFolder = getFolderFromCacheList(sToFolderFullNameRaw); oToFolder = getFolderFromCacheList(sToFolderFullName);
if (oFromFolder && oToFolder) { if (oFromFolder && oToFolder) {
if (undefined === bCopy ? false : !!bCopy) { if (undefined === bCopy ? false : !!bCopy) {
@ -511,7 +511,7 @@ class AppUser extends AbstractApp {
); );
if (!hash || unreadCountChange || result.Hash !== hash) { if (!hash || unreadCountChange || result.Hash !== hash) {
if (folderFromCache.fullName === FolderUserStore.currentFolderFullNameRaw()) { if (folderFromCache.fullName === FolderUserStore.currentFolderFullName()) {
this.reloadMessageList(); this.reloadMessageList();
} else if (getFolderInboxName() === folderFromCache.fullName) { } else if (getFolderInboxName() === folderFromCache.fullName) {
Remote.messageList(null, {Folder: getFolderInboxName()}, true); Remote.messageList(null, {Folder: getFolderInboxName()}, true);
@ -555,11 +555,11 @@ class AppUser extends AbstractApp {
} }
if (!hash || item.Hash !== hash) { if (!hash || item.Hash !== hash) {
if (folder.fullName === FolderUserStore.currentFolderFullNameRaw()) { if (folder.fullName === FolderUserStore.currentFolderFullName()) {
this.reloadMessageList(); this.reloadMessageList();
} }
} else if (unreadCountChange } else if (unreadCountChange
&& folder.fullName === FolderUserStore.currentFolderFullNameRaw() && folder.fullName === FolderUserStore.currentFolderFullName()
&& MessageUserStore.list.length) { && MessageUserStore.list.length) {
this.folderInformation(folder.fullName, MessageUserStore.list()); this.folderInformation(folder.fullName, MessageUserStore.list());
} }
@ -575,11 +575,11 @@ class AppUser extends AbstractApp {
} }
/** /**
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {number} iSetAction * @param {number} iSetAction
* @param {Array=} messages = null * @param {Array=} messages = null
*/ */
messageListAction(sFolderFullNameRaw, iSetAction, messages) { messageListAction(sFolderFullName, iSetAction, messages) {
let folder = null, let folder = null,
alreadyUnread = 0, alreadyUnread = 0,
rootUids = []; rootUids = [];
@ -591,48 +591,48 @@ class AppUser extends AbstractApp {
rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null) rootUids = messages.map(oMessage => oMessage && oMessage.uid ? oMessage.uid : null)
.validUnique(); .validUnique();
if (sFolderFullNameRaw && rootUids.length) { if (sFolderFullName && rootUids.length) {
switch (iSetAction) { switch (iSetAction) {
case MessageSetAction.SetSeen: case MessageSetAction.SetSeen:
rootUids.forEach(sSubUid => rootUids.forEach(sSubUid =>
alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullNameRaw, sSubUid, iSetAction) alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
); );
folder = getFolderFromCacheList(sFolderFullNameRaw); folder = getFolderFromCacheList(sFolderFullName);
if (folder) { if (folder) {
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread); folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread);
} }
Remote.messageSetSeen(null, sFolderFullNameRaw, rootUids, true); Remote.messageSetSeen(null, sFolderFullName, rootUids, true);
break; break;
case MessageSetAction.UnsetSeen: case MessageSetAction.UnsetSeen:
rootUids.forEach(sSubUid => rootUids.forEach(sSubUid =>
alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullNameRaw, sSubUid, iSetAction) alreadyUnread += MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
); );
folder = getFolderFromCacheList(sFolderFullNameRaw); folder = getFolderFromCacheList(sFolderFullName);
if (folder) { if (folder) {
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread + rootUids.length); folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread + rootUids.length);
} }
Remote.messageSetSeen(null, sFolderFullNameRaw, rootUids, false); Remote.messageSetSeen(null, sFolderFullName, rootUids, false);
break; break;
case MessageSetAction.SetFlag: case MessageSetAction.SetFlag:
rootUids.forEach(sSubUid => rootUids.forEach(sSubUid =>
MessageFlagsCache.storeBySetAction(sFolderFullNameRaw, sSubUid, iSetAction) MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
); );
Remote.messageSetFlagged(null, sFolderFullNameRaw, rootUids, true); Remote.messageSetFlagged(null, sFolderFullName, rootUids, true);
break; break;
case MessageSetAction.UnsetFlag: case MessageSetAction.UnsetFlag:
rootUids.forEach(sSubUid => rootUids.forEach(sSubUid =>
MessageFlagsCache.storeBySetAction(sFolderFullNameRaw, sSubUid, iSetAction) MessageFlagsCache.storeBySetAction(sFolderFullName, sSubUid, iSetAction)
); );
Remote.messageSetFlagged(null, sFolderFullNameRaw, rootUids, false); Remote.messageSetFlagged(null, sFolderFullName, rootUids, false);
break; break;
// no default // no default
} }
@ -734,7 +734,7 @@ class AppUser extends AbstractApp {
]); ]);
setInterval(() => { setInterval(() => {
const cF = FolderUserStore.currentFolderFullNameRaw(), const cF = FolderUserStore.currentFolderFullName(),
iF = getFolderInboxName(); iF = getFolderInboxName();
this.folderInformation(iF); this.folderInformation(iF);
if (iF !== cF) { if (iF !== cF) {
@ -751,7 +751,7 @@ class AppUser extends AbstractApp {
this.accountsAndIdentities(); this.accountsAndIdentities();
setTimeout(() => { setTimeout(() => {
const cF = FolderUserStore.currentFolderFullNameRaw(); const cF = FolderUserStore.currentFolderFullName();
if (getFolderInboxName() !== cF) { if (getFolderInboxName() !== cF) {
this.folderInformation(cF); this.folderInformation(cF);
} }

View file

@ -25,11 +25,11 @@ export const
}, },
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @param {string} uid * @param {string} uid
* @returns {string} * @returns {string}
*/ */
getMessageKey = (folderFullNameRaw, uid) => `${folderFullNameRaw}#${uid}`, getMessageKey = (folderFullName, uid) => `${folderFullName}#${uid}`,
/** /**
* @param {string} folder * @param {string} folder
@ -45,18 +45,18 @@ export const
hasRequestedMessage = (folder, uid) => true === REQUESTED_MESSAGE_CACHE[getMessageKey(folder, uid)], hasRequestedMessage = (folder, uid) => true === REQUESTED_MESSAGE_CACHE[getMessageKey(folder, uid)],
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @param {string} uid * @param {string} uid
*/ */
addNewMessageCache = (folderFullNameRaw, uid) => NEW_MESSAGE_CACHE[getMessageKey(folderFullNameRaw, uid)] = true, addNewMessageCache = (folderFullName, uid) => NEW_MESSAGE_CACHE[getMessageKey(folderFullName, uid)] = true,
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @param {string} uid * @param {string} uid
*/ */
hasNewMessageAndRemoveFromCache = (folderFullNameRaw, uid) => { hasNewMessageAndRemoveFromCache = (folderFullName, uid) => {
if (NEW_MESSAGE_CACHE[getMessageKey(folderFullNameRaw, uid)]) { if (NEW_MESSAGE_CACHE[getMessageKey(folderFullName, uid)]) {
NEW_MESSAGE_CACHE[getMessageKey(folderFullNameRaw, uid)] = null; NEW_MESSAGE_CACHE[getMessageKey(folderFullName, uid)] = null;
return true; return true;
} }
return false; return false;
@ -81,60 +81,60 @@ export const
* @param {string} folderHash * @param {string} folderHash
* @returns {string} * @returns {string}
*/ */
getFolderFullNameRaw = folderHash => getFolderFullName = folderHash =>
folderHash && FOLDERS_NAME_CACHE[folderHash] ? FOLDERS_NAME_CACHE[folderHash] : '', folderHash && FOLDERS_NAME_CACHE[folderHash] ? FOLDERS_NAME_CACHE[folderHash] : '',
/** /**
* @param {string} folderHash * @param {string} folderHash
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @param {?FolderModel} folder * @param {?FolderModel} folder
*/ */
setFolder = (folderHash, folderFullNameRaw, folder) => { setFolder = (folderHash, folderFullName, folder) => {
FOLDERS_CACHE[folderFullNameRaw] = folder; FOLDERS_CACHE[folderFullName] = folder;
FOLDERS_NAME_CACHE[folderHash] = folderFullNameRaw; FOLDERS_NAME_CACHE[folderHash] = folderFullName;
}, },
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @returns {string} * @returns {string}
*/ */
getFolderHash = folderFullNameRaw => getFolderHash = folderFullName =>
folderFullNameRaw && FOLDERS_HASH_CACHE[folderFullNameRaw] ? FOLDERS_HASH_CACHE[folderFullNameRaw] : '', folderFullName && FOLDERS_HASH_CACHE[folderFullName] ? FOLDERS_HASH_CACHE[folderFullName] : '',
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @param {string} folderHash * @param {string} folderHash
*/ */
setFolderHash = (folderFullNameRaw, folderHash) => setFolderHash = (folderFullName, folderHash) =>
folderFullNameRaw && (FOLDERS_HASH_CACHE[folderFullNameRaw] = folderHash), folderFullName && (FOLDERS_HASH_CACHE[folderFullName] = folderHash),
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @returns {string} * @returns {string}
*/ */
getFolderUidNext = folderFullNameRaw => getFolderUidNext = folderFullName =>
folderFullNameRaw && FOLDERS_UID_NEXT_CACHE[folderFullNameRaw] folderFullName && FOLDERS_UID_NEXT_CACHE[folderFullName]
? FOLDERS_UID_NEXT_CACHE[folderFullNameRaw] ? FOLDERS_UID_NEXT_CACHE[folderFullName]
: '', : '',
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @param {string} uidNext * @param {string} uidNext
*/ */
setFolderUidNext = (folderFullNameRaw, uidNext) => setFolderUidNext = (folderFullName, uidNext) =>
FOLDERS_UID_NEXT_CACHE[folderFullNameRaw] = uidNext, FOLDERS_UID_NEXT_CACHE[folderFullName] = uidNext,
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
* @returns {?FolderModel} * @returns {?FolderModel}
*/ */
getFolderFromCacheList = folderFullNameRaw => getFolderFromCacheList = folderFullName =>
folderFullNameRaw && FOLDERS_CACHE[folderFullNameRaw] ? FOLDERS_CACHE[folderFullNameRaw] : null, folderFullName && FOLDERS_CACHE[folderFullName] ? FOLDERS_CACHE[folderFullName] : null,
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullName
*/ */
removeFolderFromCacheList = folderFullNameRaw => delete FOLDERS_CACHE[folderFullNameRaw]; removeFolderFromCacheList = folderFullName => delete FOLDERS_CACHE[folderFullName];
export class MessageFlagsCache export class MessageFlagsCache
{ {

View file

@ -67,9 +67,9 @@ export class FilterModel extends AbstractModel {
this.conditions = ko.observableArray(); this.conditions = ko.observableArray();
const fGetRealFolderName = (folderFullNameRaw) => { const fGetRealFolderName = (folderFullName) => {
const folder = getFolderFromCacheList(folderFullNameRaw); const folder = getFolderFromCacheList(folderFullName);
return folder ? folder.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullNameRaw; return folder ? folder.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullName;
}; };
this.addComputables({ this.addComputables({

View file

@ -21,10 +21,10 @@ import { i18n, trigger as translatorTrigger } from 'Common/Translator';
import { AbstractModel } from 'Knoin/AbstractModel'; import { AbstractModel } from 'Knoin/AbstractModel';
const const
normalizeFolder = sFolderFullNameRaw => ('' === sFolderFullNameRaw normalizeFolder = sFolderFullName => ('' === sFolderFullName
|| UNUSED_OPTION_VALUE === sFolderFullNameRaw || UNUSED_OPTION_VALUE === sFolderFullName
|| null !== Cache.getFolderFromCacheList(sFolderFullNameRaw)) || null !== Cache.getFolderFromCacheList(sFolderFullName))
? sFolderFullNameRaw ? sFolderFullName
: ''; : '';
// index is FolderType value // index is FolderType value

View file

@ -171,18 +171,18 @@ class RemoteUserFetch extends AbstractFetchRemote {
*/ */
messageList(fCallback, params, bSilent = false) { messageList(fCallback, params, bSilent = false) {
const const
sFolderFullNameRaw = pString(params.Folder), sFolderFullName = pString(params.Folder),
folderHash = getFolderHash(sFolderFullNameRaw); folderHash = getFolderHash(sFolderFullName);
params = Object.assign({ params = Object.assign({
Offset: 0, Offset: 0,
Limit: SettingsUserStore.messagesPerPage(), Limit: SettingsUserStore.messagesPerPage(),
Search: '', Search: '',
UidNext: getFolderInboxName() === sFolderFullNameRaw ? getFolderUidNext(sFolderFullNameRaw) : '', UidNext: getFolderInboxName() === sFolderFullName ? getFolderUidNext(sFolderFullName) : '',
Sort: FolderUserStore.sortMode(), Sort: FolderUserStore.sortMode(),
Hash: folderHash + SettingsGet('AccountHash') Hash: folderHash + SettingsGet('AccountHash')
}, params); }, params);
params.Folder = sFolderFullNameRaw; params.Folder = sFolderFullName;
if (AppUserStore.threadsAllowed() && SettingsUserStore.useThreads()) { if (AppUserStore.threadsAllowed() && SettingsUserStore.useThreads()) {
params.UseThreads = 1; params.UseThreads = 1;
} else { } else {
@ -226,15 +226,15 @@ class RemoteUserFetch extends AbstractFetchRemote {
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {number} iUid * @param {number} iUid
* @returns {boolean} * @returns {boolean}
*/ */
message(fCallback, sFolderFullNameRaw, iUid) { message(fCallback, sFolderFullName, iUid) {
sFolderFullNameRaw = pString(sFolderFullNameRaw); sFolderFullName = pString(sFolderFullName);
iUid = pInt(iUid); iUid = pInt(iUid);
if (getFolderFromCacheList(sFolderFullNameRaw) && 0 < iUid) { if (getFolderFromCacheList(sFolderFullName) && 0 < iUid) {
this.defaultRequest( this.defaultRequest(
fCallback, fCallback,
'Message', 'Message',
@ -244,7 +244,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
SUB_QUERY_PREFIX + SUB_QUERY_PREFIX +
'/' + '/' +
urlSafeJSON([ urlSafeJSON([
sFolderFullNameRaw, sFolderFullName,
iUid, iUid,
AppUserStore.threadsAllowed() && SettingsUserStore.useThreads() ? 1 : 0, AppUserStore.threadsAllowed() && SettingsUserStore.useThreads() ? 1 : 0,
SettingsGet('AccountHash') SettingsGet('AccountHash')
@ -350,13 +350,13 @@ class RemoteUserFetch extends AbstractFetchRemote {
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {Array} aUids * @param {Array} aUids
* @param {boolean} bSetFlagged * @param {boolean} bSetFlagged
*/ */
messageSetFlagged(fCallback, sFolderFullNameRaw, aUids, bSetFlagged) { messageSetFlagged(fCallback, sFolderFullName, aUids, bSetFlagged) {
this.defaultRequest(fCallback, 'MessageSetFlagged', { this.defaultRequest(fCallback, 'MessageSetFlagged', {
Folder: sFolderFullNameRaw, Folder: sFolderFullName,
Uids: aUids.join(','), Uids: aUids.join(','),
SetAction: bSetFlagged ? 1 : 0 SetAction: bSetFlagged ? 1 : 0
}); });
@ -364,13 +364,13 @@ class RemoteUserFetch extends AbstractFetchRemote {
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {Array} aUids * @param {Array} aUids
* @param {boolean} bSetSeen * @param {boolean} bSetSeen
*/ */
messageSetSeen(fCallback, sFolderFullNameRaw, aUids, bSetSeen) { messageSetSeen(fCallback, sFolderFullName, aUids, bSetSeen) {
this.defaultRequest(fCallback, 'MessageSetSeen', { this.defaultRequest(fCallback, 'MessageSetSeen', {
Folder: sFolderFullNameRaw, Folder: sFolderFullName,
Uids: aUids.join(','), Uids: aUids.join(','),
SetAction: bSetSeen ? 1 : 0 SetAction: bSetSeen ? 1 : 0
}); });
@ -378,13 +378,13 @@ class RemoteUserFetch extends AbstractFetchRemote {
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {boolean} bSetSeen * @param {boolean} bSetSeen
* @param {Array} aThreadUids = null * @param {Array} aThreadUids = null
*/ */
messageSetSeenToAll(fCallback, sFolderFullNameRaw, bSetSeen, aThreadUids = null) { messageSetSeenToAll(fCallback, sFolderFullName, bSetSeen, aThreadUids = null) {
this.defaultRequest(fCallback, 'MessageSetSeenToAll', { this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
Folder: sFolderFullNameRaw, Folder: sFolderFullName,
SetAction: bSetSeen ? 1 : 0, SetAction: bSetSeen ? 1 : 0,
ThreadUids: aThreadUids ? aThreadUids.join(',') : '' ThreadUids: aThreadUids ? aThreadUids.join(',') : ''
}); });
@ -453,34 +453,34 @@ class RemoteUserFetch extends AbstractFetchRemote {
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
*/ */
folderClear(fCallback, sFolderFullNameRaw) { folderClear(fCallback, sFolderFullName) {
this.defaultRequest(fCallback, 'FolderClear', { this.defaultRequest(fCallback, 'FolderClear', {
Folder: sFolderFullNameRaw Folder: sFolderFullName
}); });
} }
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {boolean} bSubscribe * @param {boolean} bSubscribe
*/ */
folderSetSubscribe(fCallback, sFolderFullNameRaw, bSubscribe) { folderSetSubscribe(fCallback, sFolderFullName, bSubscribe) {
this.defaultRequest(fCallback, 'FolderSubscribe', { this.defaultRequest(fCallback, 'FolderSubscribe', {
Folder: sFolderFullNameRaw, Folder: sFolderFullName,
Subscribe: bSubscribe ? 1 : 0 Subscribe: bSubscribe ? 1 : 0
}); });
} }
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {boolean} bSubscribe * @param {boolean} bSubscribe
*/ */
folderSetMetadata(fCallback, sFolderFullNameRaw, sKey, sValue) { folderSetMetadata(fCallback, sFolderFullName, sKey, sValue) {
this.defaultRequest(fCallback, 'FolderSetMetadata', { this.defaultRequest(fCallback, 'FolderSetMetadata', {
Folder: sFolderFullNameRaw, Folder: sFolderFullName,
Key: sKey, Key: sKey,
Value: sValue Value: sValue
}); });
@ -488,12 +488,12 @@ class RemoteUserFetch extends AbstractFetchRemote {
/** /**
* @param {?Function} fCallback * @param {?Function} fCallback
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {boolean} bCheckable * @param {boolean} bCheckable
*/ */
folderSetCheckable(fCallback, sFolderFullNameRaw, bCheckable) { folderSetCheckable(fCallback, sFolderFullName, bCheckable) {
this.defaultRequest(fCallback, 'FolderCheckable', { this.defaultRequest(fCallback, 'FolderCheckable', {
Folder: sFolderFullNameRaw, Folder: sFolderFullName,
Checkable: bCheckable ? 1 : 0 Checkable: bCheckable ? 1 : 0
}); });
} }
@ -662,9 +662,9 @@ class RemoteUserFetch extends AbstractFetchRemote {
this.foldersTimeout = setTimeout(() => this.foldersReload(), 500); this.foldersTimeout = setTimeout(() => this.foldersReload(), 500);
} }
folderDelete(sFolderFullNameRaw) { folderDelete(sFolderFullName) {
return this.postRequest('FolderDelete', FolderUserStore.foldersDeleting, { return this.postRequest('FolderDelete', FolderUserStore.foldersDeleting, {
Folder: sFolderFullNameRaw Folder: sFolderFullName
}); });
} }
@ -675,16 +675,16 @@ class RemoteUserFetch extends AbstractFetchRemote {
}); });
} }
folderMove(sPrevFolderFullNameRaw, sNewFolderFullName) { folderMove(sPrevFolderFullName, sNewFolderFullName) {
return this.postRequest('FolderMove', FolderUserStore.foldersRenaming, { return this.postRequest('FolderMove', FolderUserStore.foldersRenaming, {
Folder: sPrevFolderFullNameRaw, Folder: sPrevFolderFullName,
NewFolder: sNewFolderFullName NewFolder: sNewFolderFullName
}); });
} }
folderRename(sPrevFolderFullNameRaw, sNewFolderName) { folderRename(sPrevFolderFullName, sNewFolderName) {
return this.postRequest('FolderRename', FolderUserStore.foldersRenaming, { return this.postRequest('FolderRename', FolderUserStore.foldersRenaming, {
Folder: sPrevFolderFullNameRaw, Folder: sPrevFolderFullName,
NewFolderName: sNewFolderName NewFolderName: sNewFolderName
}); });
} }

View file

@ -3,7 +3,7 @@ import { Layout, ClientSideKeyName } from 'Common/EnumsUser';
import { doc, leftPanelDisabled, moveAction, Settings, elementById } from 'Common/Globals'; import { doc, leftPanelDisabled, moveAction, Settings, elementById } from 'Common/Globals';
import { pString, pInt } from 'Common/Utils'; import { pString, pInt } from 'Common/Utils';
import { setLayoutResizer } from 'Common/UtilsUser'; import { setLayoutResizer } from 'Common/UtilsUser';
import { getFolderFromCacheList, getFolderFullNameRaw, getFolderInboxName } from 'Common/Cache'; import { getFolderFromCacheList, getFolderFullName, getFolderInboxName } from 'Common/Cache';
import { i18n } from 'Common/Translator'; import { i18n } from 'Common/Translator';
import { SettingsUserStore } from 'Stores/User/Settings'; import { SettingsUserStore } from 'Stores/User/Settings';
@ -64,7 +64,7 @@ export class MailBoxUserScreen extends AbstractScreen {
* @returns {void} * @returns {void}
*/ */
onRoute(folderHash, page, search) { onRoute(folderHash, page, search) {
const folder = getFolderFromCacheList(getFolderFullNameRaw(folderHash.replace(/~([\d]+)$/, ''))); const folder = getFolderFromCacheList(getFolderFullName(folderHash.replace(/~([\d]+)$/, '')));
if (folder) { if (folder) {
let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1'); let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1');

View file

@ -27,9 +27,9 @@ ContactUserStore.sync = fResultFunc => {
&& !ContactUserStore.syncing() && !ContactUserStore.syncing()
) { ) {
ContactUserStore.syncing(true); ContactUserStore.syncing(true);
Remote.contactsSync((sResult, oData) => { Remote.contactsSync((iError, oData) => {
ContactUserStore.syncing(false); ContactUserStore.syncing(false);
fResultFunc && fResultFunc(sResult, oData); fResultFunc && fResultFunc(iError, oData);
}); });
} }
}; };
@ -44,8 +44,7 @@ ContactUserStore.init = () => {
ContactUserStore.syncPass(SettingsGet('ContactsSyncPassword')); ContactUserStore.syncPass(SettingsGet('ContactsSyncPassword'));
setTimeout(ContactUserStore.sync, 10000); setTimeout(ContactUserStore.sync, 10000);
value = pInt(SettingsGet('ContactsSyncInterval')); value = pInt(SettingsGet('ContactsSyncInterval'));
value = 5 <= value ? value : 20; value = 5 <= value ? (320 >= value ? value : 320) : 20;
value = 320 >= value ? value : 320;
setInterval(ContactUserStore.sync, value * 60000 + 5000); setInterval(ContactUserStore.sync, value * 60000 + 5000);
} }
}; };

View file

@ -56,8 +56,6 @@ export const FolderUserStore = new class {
draftFolderNotEnabled: () => !self.draftFolder() || UNUSED_OPTION_VALUE === self.draftFolder(), draftFolderNotEnabled: () => !self.draftFolder() || UNUSED_OPTION_VALUE === self.draftFolder(),
currentFolderFullNameRaw: () => (self.currentFolder() ? self.currentFolder().fullName : ''),
currentFolderFullName: () => (self.currentFolder() ? self.currentFolder().fullName : ''), currentFolderFullName: () => (self.currentFolder() ? self.currentFolder().fullName : ''),
currentFolderFullNameHash: () => (self.currentFolder() ? self.currentFolder().fullNameHash : ''), currentFolderFullNameHash: () => (self.currentFolder() ? self.currentFolder().fullNameHash : ''),

View file

@ -267,12 +267,12 @@ export const MessageUserStore = new class {
} }
/** /**
* @param {string} fromFolderFullNameRaw * @param {string} fromFolderFullName
* @param {Array} uidForRemove * @param {Array} uidForRemove
* @param {string=} toFolderFullNameRaw = '' * @param {string=} toFolderFullName = ''
* @param {boolean=} copy = false * @param {boolean=} copy = false
*/ */
removeMessagesFromList(fromFolderFullNameRaw, uidForRemove, toFolderFullNameRaw = '', copy = false) { removeMessagesFromList(fromFolderFullName, uidForRemove, toFolderFullName = '', copy = false) {
uidForRemove = uidForRemove.map(mValue => pInt(mValue)); uidForRemove = uidForRemove.map(mValue => pInt(mValue));
let unseenCount = 0, let unseenCount = 0,
@ -281,11 +281,10 @@ export const MessageUserStore = new class {
const trashFolder = FolderUserStore.trashFolder(), const trashFolder = FolderUserStore.trashFolder(),
spamFolder = FolderUserStore.spamFolder(), spamFolder = FolderUserStore.spamFolder(),
fromFolder = getFolderFromCacheList(fromFolderFullNameRaw), fromFolder = getFolderFromCacheList(fromFolderFullName),
toFolder = toFolderFullNameRaw ? getFolderFromCacheList(toFolderFullNameRaw) : null, toFolder = toFolderFullName ? getFolderFromCacheList(toFolderFullName) : null,
currentFolderFullNameRaw = FolderUserStore.currentFolderFullNameRaw(),
messages = messages =
currentFolderFullNameRaw === fromFolderFullNameRaw FolderUserStore.currentFolderFullName() === fromFolderFullName
? messageList.filter(item => item && uidForRemove.includes(pInt(item.uid))) ? messageList.filter(item => item && uidForRemove.includes(pInt(item.uid)))
: []; : [];
@ -339,12 +338,12 @@ export const MessageUserStore = new class {
} }
} }
if (fromFolderFullNameRaw) { if (fromFolderFullName) {
setFolderHash(fromFolderFullNameRaw, ''); setFolderHash(fromFolderFullName, '');
} }
if (toFolderFullNameRaw) { if (toFolderFullName) {
setFolderHash(toFolderFullNameRaw, ''); setFolderHash(toFolderFullName, '');
} }
if (this.listThreadUid()) { if (this.listThreadUid()) {
@ -635,7 +634,7 @@ export const MessageUserStore = new class {
* @returns {string} * @returns {string}
*/ */
calculateMessageListHash(list) { calculateMessageListHash(list) {
return list.map(message => '' + message.hash + '_' + message.threadsLen() + '_' + message.flagHash()).join( return list.map(message => message.hash + '_' + message.threadsLen() + '_' + message.flagHash()).join(
'|' '|'
); );
} }

View file

@ -1,7 +1,6 @@
import ko from 'ko';
import { SMAudio } from 'Common/Audio'; import { SMAudio } from 'Common/Audio';
import * as Links from 'Common/Links'; import * as Links from 'Common/Links';
import { addObservablesTo } from 'Common/Utils';
/** /**
* Might not work due to the new ServiceWorkerRegistration.showNotification * Might not work due to the new ServiceWorkerRegistration.showNotification
@ -36,11 +35,13 @@ if (WorkerNotifications && ServiceWorkerRegistration && ServiceWorkerRegistratio
export const NotificationUserStore = new class { export const NotificationUserStore = new class {
constructor() { constructor() {
this.enableSoundNotification = ko.observable(false); addObservablesTo(this, {
enableSoundNotification: false,
this.enableDesktopNotification = ko.observable(false)/*.extend({ notify: 'always' })*/; enableDesktopNotification: false,/*.extend({ notify: 'always' })*/
this.isDesktopNotificationAllowed = ko.observable(!NotificationsDenied()); isDesktopNotificationAllowed: !NotificationsDenied()
});
this.enableDesktopNotification.subscribe(value => { this.enableDesktopNotification.subscribe(value => {
DesktopNotifications = !!value; DesktopNotifications = !!value;

View file

@ -571,7 +571,7 @@ class ComposePopupView extends AbstractViewPopup {
const draftFolder = FolderUserStore.draftFolder(); const draftFolder = FolderUserStore.draftFolder();
if (draftFolder && UNUSED_OPTION_VALUE !== draftFolder) { if (draftFolder && UNUSED_OPTION_VALUE !== draftFolder) {
setFolderHash(draftFolder, ''); setFolderHash(draftFolder, '');
if (FolderUserStore.currentFolderFullNameRaw() === draftFolder) { if (FolderUserStore.currentFolderFullName() === draftFolder) {
rl.app.reloadMessageList(true); rl.app.reloadMessageList(true);
} else { } else {
rl.app.folderInformation(draftFolder); rl.app.folderInformation(draftFolder);

View file

@ -86,7 +86,7 @@ export class MailFolderList extends AbstractViewLeft {
if (moveAction()) { if (moveAction()) {
moveAction(false); moveAction(false);
rl.app.moveMessagesToFolder( rl.app.moveMessagesToFolder(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
folder.fullName, folder.fullName,
event.ctrlKey event.ctrlKey
@ -96,7 +96,7 @@ export class MailFolderList extends AbstractViewLeft {
MessageUserStore.message(null); MessageUserStore.message(null);
} }
if (folder.fullName === FolderUserStore.currentFolderFullNameRaw()) { if (folder.fullName === FolderUserStore.currentFolderFullName()) {
setFolderHash(folder.fullName, ''); setFolderHash(folder.fullName, '');
} }

View file

@ -109,7 +109,7 @@ export class MailMessageList extends AbstractViewRight {
folderMenuForMove: () => folderMenuForMove: () =>
folderListOptionsBuilder( folderListOptionsBuilder(
[FolderUserStore.currentFolderFullNameRaw()], [FolderUserStore.currentFolderFullName()],
[], [],
item => item ? item.localName() : '' item => item ? item.localName() : ''
), ),
@ -279,7 +279,7 @@ export class MailMessageList extends AbstractViewRight {
if (Settings.capa(Capa.DangerousActions)) { if (Settings.capa(Capa.DangerousActions)) {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Trash, FolderType.Trash,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
false false
); );
@ -289,7 +289,7 @@ export class MailMessageList extends AbstractViewRight {
deleteCommand() { deleteCommand() {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Trash, FolderType.Trash,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
@ -298,7 +298,7 @@ export class MailMessageList extends AbstractViewRight {
archiveCommand() { archiveCommand() {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Archive, FolderType.Archive,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
@ -307,7 +307,7 @@ export class MailMessageList extends AbstractViewRight {
spamCommand() { spamCommand() {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.Spam, FolderType.Spam,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
@ -316,7 +316,7 @@ export class MailMessageList extends AbstractViewRight {
notSpamCommand() { notSpamCommand() {
rl.app.deleteMessagesFromFolder( rl.app.deleteMessagesFromFolder(
FolderType.NotSpam, FolderType.NotSpam,
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
true true
); );
@ -413,16 +413,16 @@ export class MailMessageList extends AbstractViewRight {
} }
/** /**
* @param {string} sToFolderFullNameRaw * @param {string} sToFolderFullName
* @param {boolean} bCopy * @param {boolean} bCopy
* @returns {boolean} * @returns {boolean}
*/ */
moveSelectedMessagesToFolder(sToFolderFullNameRaw, bCopy) { moveSelectedMessagesToFolder(sToFolderFullName, bCopy) {
if (MessageUserStore.hasCheckedOrSelected()) { if (MessageUserStore.hasCheckedOrSelected()) {
rl.app.moveMessagesToFolder( rl.app.moveMessagesToFolder(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageUserStore.listCheckedOrSelectedUidsWithSubMails(), MessageUserStore.listCheckedOrSelectedUidsWithSubMails(),
sToFolderFullNameRaw, sToFolderFullName,
bCopy bCopy
); );
} }
@ -437,37 +437,37 @@ export class MailMessageList extends AbstractViewRight {
item && !uids.includes(item.uid) && uids.push(item.uid); item && !uids.includes(item.uid) && uids.push(item.uid);
return uids.length ? { return uids.length ? {
copy: event.ctrlKey, copy: event.ctrlKey,
folder: FolderUserStore.currentFolderFullNameRaw(), folder: FolderUserStore.currentFolderFullName(),
uids: uids uids: uids
} : null; } : null;
} }
/** /**
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {number} iSetAction * @param {number} iSetAction
* @param {Array=} aMessages = null * @param {Array=} aMessages = null
* @returns {void} * @returns {void}
*/ */
setAction(sFolderFullNameRaw, iSetAction, aMessages) { setAction(sFolderFullName, iSetAction, aMessages) {
rl.app.messageListAction(sFolderFullNameRaw, iSetAction, aMessages); rl.app.messageListAction(sFolderFullName, iSetAction, aMessages);
} }
/** /**
* @param {string} sFolderFullNameRaw * @param {string} sFolderFullName
* @param {number} iSetAction * @param {number} iSetAction
* @param {number} iThreadUid = '' * @param {number} iThreadUid = ''
* @returns {void} * @returns {void}
*/ */
setActionForAll(sFolderFullNameRaw, iSetAction, iThreadUid = 0) { setActionForAll(sFolderFullName, iSetAction, iThreadUid = 0) {
if (sFolderFullNameRaw) { if (sFolderFullName) {
let cnt = 0; let cnt = 0;
const uids = []; const uids = [];
let folder = getFolderFromCacheList(sFolderFullNameRaw); let folder = getFolderFromCacheList(sFolderFullName);
if (folder) { if (folder) {
switch (iSetAction) { switch (iSetAction) {
case MessageSetAction.SetSeen: case MessageSetAction.SetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw); folder = getFolderFromCacheList(sFolderFullName);
if (folder) { if (folder) {
MessageUserStore.list.forEach(message => { MessageUserStore.list.forEach(message => {
if (message.isUnseen()) { if (message.isUnseen()) {
@ -487,13 +487,13 @@ export class MailMessageList extends AbstractViewRight {
folder.messageCountUnread(0); folder.messageCountUnread(0);
} }
MessageFlagsCache.clearFolder(sFolderFullNameRaw); MessageFlagsCache.clearFolder(sFolderFullName);
} }
Remote.messageSetSeenToAll(null, sFolderFullNameRaw, true, iThreadUid ? uids : null); Remote.messageSetSeenToAll(null, sFolderFullName, true, iThreadUid ? uids : null);
break; break;
case MessageSetAction.UnsetSeen: case MessageSetAction.UnsetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw); folder = getFolderFromCacheList(sFolderFullName);
if (folder) { if (folder) {
MessageUserStore.list.forEach(message => { MessageUserStore.list.forEach(message => {
if (!message.isUnseen()) { if (!message.isUnseen()) {
@ -513,10 +513,10 @@ export class MailMessageList extends AbstractViewRight {
folder.messageCountUnread(folder.messageCountAll()); folder.messageCountUnread(folder.messageCountAll());
} }
MessageFlagsCache.clearFolder(sFolderFullNameRaw); MessageFlagsCache.clearFolder(sFolderFullName);
} }
Remote.messageSetSeenToAll(null, sFolderFullNameRaw, false, iThreadUid ? uids : null); Remote.messageSetSeenToAll(null, sFolderFullName, false, iThreadUid ? uids : null);
break; break;
// no default // no default
} }
@ -528,7 +528,7 @@ export class MailMessageList extends AbstractViewRight {
listSetSeen() { listSetSeen() {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageSetAction.SetSeen, MessageSetAction.SetSeen,
MessageUserStore.listCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
@ -536,7 +536,7 @@ export class MailMessageList extends AbstractViewRight {
listSetAllSeen() { listSetAllSeen() {
this.setActionForAll( this.setActionForAll(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageSetAction.SetSeen, MessageSetAction.SetSeen,
MessageUserStore.listEndThreadUid() MessageUserStore.listEndThreadUid()
); );
@ -544,7 +544,7 @@ export class MailMessageList extends AbstractViewRight {
listUnsetSeen() { listUnsetSeen() {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageSetAction.UnsetSeen, MessageSetAction.UnsetSeen,
MessageUserStore.listCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
@ -552,7 +552,7 @@ export class MailMessageList extends AbstractViewRight {
listSetFlags() { listSetFlags() {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageSetAction.SetFlag, MessageSetAction.SetFlag,
MessageUserStore.listCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
@ -560,7 +560,7 @@ export class MailMessageList extends AbstractViewRight {
listUnsetFlags() { listUnsetFlags() {
this.setAction( this.setAction(
FolderUserStore.currentFolderFullNameRaw(), FolderUserStore.currentFolderFullName(),
MessageSetAction.UnsetFlag, MessageSetAction.UnsetFlag,
MessageUserStore.listCheckedOrSelected() MessageUserStore.listCheckedOrSelected()
); );
@ -704,7 +704,7 @@ export class MailMessageList extends AbstractViewRight {
name: 'AppendFile', name: 'AppendFile',
limit: 1, limit: 1,
hidden: { hidden: {
Folder: () => FolderUserStore.currentFolderFullNameRaw() Folder: () => FolderUserStore.currentFolderFullName()
}, },
dragAndDropElement: this.dragOverArea(), dragAndDropElement: this.dragOverArea(),
dragAndDropBodyElement: this.dragOverBodyArea() dragAndDropBodyElement: this.dragOverBodyArea()

View file

@ -176,8 +176,8 @@ export class MailMessageView extends AbstractViewRight {
return ''; return '';
}, },
messageListAndMessageViewLoading: messageListOrViewLoading:
() => MessageUserStore.listCompleteLoading() || MessageUserStore.messageLoading() () => MessageUserStore.listCompleteLoading() | MessageUserStore.messageLoading()
}); });
this.addSubscribables({ this.addSubscribables({
@ -258,8 +258,8 @@ export class MailMessageView extends AbstractViewRight {
decorateKoCommands(this, { decorateKoCommands(this, {
closeMessageCommand: 1, closeMessageCommand: 1,
messageEditCommand: self => self.messageVisibility(), messageEditCommand: self => self.messageVisibility(),
goUpCommand: self => !self.messageListAndMessageViewLoading(), goUpCommand: self => !self.messageListOrViewLoading(),
goDownCommand: self => !self.messageListAndMessageViewLoading() goDownCommand: self => !self.messageListOrViewLoading()
}); });
} }