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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -27,9 +27,9 @@ ContactUserStore.sync = fResultFunc => {
&& !ContactUserStore.syncing()
) {
ContactUserStore.syncing(true);
Remote.contactsSync((sResult, oData) => {
Remote.contactsSync((iError, oData) => {
ContactUserStore.syncing(false);
fResultFunc && fResultFunc(sResult, oData);
fResultFunc && fResultFunc(iError, oData);
});
}
};
@ -44,8 +44,7 @@ ContactUserStore.init = () => {
ContactUserStore.syncPass(SettingsGet('ContactsSyncPassword'));
setTimeout(ContactUserStore.sync, 10000);
value = pInt(SettingsGet('ContactsSyncInterval'));
value = 5 <= value ? value : 20;
value = 320 >= value ? value : 320;
value = 5 <= value ? (320 >= value ? value : 320) : 20;
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(),
currentFolderFullNameRaw: () => (self.currentFolder() ? self.currentFolder().fullName : ''),
currentFolderFullName: () => (self.currentFolder() ? self.currentFolder().fullName : ''),
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 {string=} toFolderFullNameRaw = ''
* @param {string=} toFolderFullName = ''
* @param {boolean=} copy = false
*/
removeMessagesFromList(fromFolderFullNameRaw, uidForRemove, toFolderFullNameRaw = '', copy = false) {
removeMessagesFromList(fromFolderFullName, uidForRemove, toFolderFullName = '', copy = false) {
uidForRemove = uidForRemove.map(mValue => pInt(mValue));
let unseenCount = 0,
@ -281,11 +281,10 @@ export const MessageUserStore = new class {
const trashFolder = FolderUserStore.trashFolder(),
spamFolder = FolderUserStore.spamFolder(),
fromFolder = getFolderFromCacheList(fromFolderFullNameRaw),
toFolder = toFolderFullNameRaw ? getFolderFromCacheList(toFolderFullNameRaw) : null,
currentFolderFullNameRaw = FolderUserStore.currentFolderFullNameRaw(),
fromFolder = getFolderFromCacheList(fromFolderFullName),
toFolder = toFolderFullName ? getFolderFromCacheList(toFolderFullName) : null,
messages =
currentFolderFullNameRaw === fromFolderFullNameRaw
FolderUserStore.currentFolderFullName() === fromFolderFullName
? messageList.filter(item => item && uidForRemove.includes(pInt(item.uid)))
: [];
@ -339,12 +338,12 @@ export const MessageUserStore = new class {
}
}
if (fromFolderFullNameRaw) {
setFolderHash(fromFolderFullNameRaw, '');
if (fromFolderFullName) {
setFolderHash(fromFolderFullName, '');
}
if (toFolderFullNameRaw) {
setFolderHash(toFolderFullNameRaw, '');
if (toFolderFullName) {
setFolderHash(toFolderFullName, '');
}
if (this.listThreadUid()) {
@ -635,7 +634,7 @@ export const MessageUserStore = new class {
* @returns {string}
*/
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 * as Links from 'Common/Links';
import { addObservablesTo } from 'Common/Utils';
/**
* Might not work due to the new ServiceWorkerRegistration.showNotification
@ -36,11 +35,13 @@ if (WorkerNotifications && ServiceWorkerRegistration && ServiceWorkerRegistratio
export const NotificationUserStore = new class {
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 => {
DesktopNotifications = !!value;

View file

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

View file

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

View file

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

View file

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