IMAP UID is integer

This commit is contained in:
djmaze 2021-09-10 16:28:29 +02:00
parent 9ffc90946c
commit 96e2e6576c
20 changed files with 124 additions and 139 deletions

View file

@ -121,18 +121,17 @@ export const
* @param {string} folder
* @param {number=} page = 1
* @param {string=} search = ''
* @param {string=} threadUid = ''
* @param {number=} threadUid = 0
* @returns {string}
*/
mailBox = (folder, page = 1, search = '', threadUid = '') => {
mailBox = (folder, page = 1, search = '', threadUid = 0) => {
page = pInt(page, 1);
search = pString(search);
let result = HASH_PREFIX + 'mailbox/';
if (folder) {
const resultThreadUid = pInt(threadUid);
result += encodeURI(folder) + (0 < resultThreadUid ? '~' + resultThreadUid : '');
result += encodeURI(folder) + (threadUid ? '~' + threadUid : '');
}
if (1 < page) {

View file

@ -96,7 +96,7 @@ export class MessageModel extends AbstractModel {
_reset() {
this.folder = '';
this.uid = '';
this.uid = 0;
this.hash = '';
this.requestHash = '';
this.externalProxy = false;
@ -188,9 +188,8 @@ export class MessageModel extends AbstractModel {
* @returns {boolean}
*/
revivePropertiesFromJson(json) {
if ('Priority' in json) {
let p = parseInt(json.Priority, 10);
json.Priority = MessagePriority.High == p || MessagePriority.Low == p ? p : MessagePriority.Normal;
if ('Priority' in json && ![MessagePriority.High, MessagePriority.Low].includes(json.Priority)) {
json.Priority = MessagePriority.Normal;
}
if (super.revivePropertiesFromJson(json)) {
// this.foundedCIDs = isArray(json.FoundedCIDs) ? json.FoundedCIDs : [];

View file

@ -239,7 +239,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
inboxUidNext = getFolderInboxName() === sFolderFullNameRaw ? getFolderUidNext(sFolderFullNameRaw) : '';
params.Folder = sFolderFullNameRaw;
params.ThreadUid = useThreads ? params.ThreadUid : '';
params.ThreadUid = useThreads ? params.ThreadUid : 0;
params = Object.assign({
Folder: '',
Offset: 0,
@ -247,7 +247,7 @@ class RemoteUserFetch extends AbstractFetchRemote {
Search: '',
UidNext: inboxUidNext,
UseThreads: useThreads,
ThreadUid: '',
ThreadUid: 0,
Sort: FolderUserStore.sortMode()
}, params);
@ -385,8 +385,8 @@ class RemoteUserFetch extends AbstractFetchRemote {
if (request) {
this.defaultRequest(fCallback, 'FolderInformation', {
Folder: folder,
FlagsUids: isArray(uids) ? uids.join(',') : '',
UidNext: getFolderInboxName() === folder ? getFolderUidNext(folder) : ''
FlagsUids: isArray(uids) ? uids : [],
UidNext: getFolderInboxName() === folder ? getFolderUidNext(folder) : 0
});
} else if (SettingsUserStore.useThreads()) {
rl.app.reloadFlagsCurrentMessageListAndMessageFromCache();
@ -463,15 +463,15 @@ class RemoteUserFetch extends AbstractFetchRemote {
/**
* @param {?Function} fCallback
* @param {string} sMessageFolder
* @param {string} sMessageUid
* @param {number} iMessageUid
* @param {string} sReadReceipt
* @param {string} sSubject
* @param {string} sText
*/
sendReadReceiptMessage(fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText) {
sendReadReceiptMessage(fCallback, sMessageFolder, iMessageUid, sReadReceipt, sSubject, sText) {
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
MessageFolder: sMessageFolder,
MessageUid: sMessageUid,
MessageUid: iMessageUid,
ReadReceipt: sReadReceipt,
Subject: sSubject,
Text: sText

View file

@ -63,16 +63,13 @@ export class MailBoxUserScreen extends AbstractScreen {
onRoute(folderHash, page, search) {
const folder = getFolderFromCacheList(getFolderFullNameRaw(folderHash.replace(/~([\d]+)$/, '')));
if (folder) {
let threadUid = folderHash.replace(/^.+~([\d]+)$/, '$1');
if (folderHash === threadUid) {
threadUid = '';
}
let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1');
FolderUserStore.currentFolder(folder);
MessageUserStore.listPage(1 > page ? 1 : page);
MessageUserStore.listSearch(search);
MessageUserStore.listThreadUid(threadUid);
MessageUserStore.listThreadUid((folderHash === threadUid) ? 0 : pInt(threadUid));
rl.app.reloadMessageList();
}

View file

@ -77,14 +77,14 @@ export const MessageUserStore = new class {
addObservablesTo(this, {
listCount: 0,
listSearch: '',
listThreadUid: '',
listThreadUid: 0,
listPage: 1,
listPageBeforeThread: 1,
listError: '',
listEndFolder: '',
listEndSearch: '',
listEndThreadUid: '',
listEndThreadUid: 0,
listEndPage: 1,
listLoading: false,
@ -348,11 +348,11 @@ export const MessageUserStore = new class {
if (this.listThreadUid()) {
if (
messageList.length &&
!!messageList.find(item => !!(item && item.deleted() && item.uid === this.listThreadUid()))
!!messageList.find(item => !!(item && item.deleted() && item.uid == this.listThreadUid()))
) {
const message = messageList.find(item => item && !item.deleted());
if (message && this.listThreadUid() !== pString(message.uid)) {
this.listThreadUid(pString(message.uid));
if (message && this.listThreadUid() != message.uid) {
this.listThreadUid(message.uid);
rl.route.setHash(
mailBox(
@ -379,7 +379,7 @@ export const MessageUserStore = new class {
true
);
} else {
this.listThreadUid('');
this.listThreadUid(0);
rl.route.setHash(
mailBox(
@ -437,7 +437,7 @@ export const MessageUserStore = new class {
message.folder === json.Folder
) {
const threads = message.threads();
if (message.uid !== json.Uid && 1 < threads.length && threads.includes(json.Uid)) {
if (message.uid != json.Uid && 1 < threads.length && threads.includes(json.Uid)) {
message = oMessage ? null : MessageModel.reviveFromJson(json);
if (message) {
message.threads(threads);
@ -450,7 +450,7 @@ export const MessageUserStore = new class {
}
}
if (message && message.uid === json.Uid) {
if (message && message.uid == json.Uid) {
oMessage || this.messageError('');
if (cached) {
@ -565,7 +565,7 @@ export const MessageUserStore = new class {
if (
selectedMessage &&
message &&
(message.folder !== selectedMessage.folder || message.uid !== selectedMessage.uid)
(message.folder !== selectedMessage.folder || message.uid != selectedMessage.uid)
) {
this.selectorMessageSelected(null);
if (1 === this.list.length) {
@ -576,7 +576,7 @@ export const MessageUserStore = new class {
subMessage =>
subMessage &&
subMessage.folder === message.folder &&
subMessage.uid === message.uid
subMessage.uid == message.uid
);
if (selectedMessage) {
@ -598,11 +598,11 @@ export const MessageUserStore = new class {
}
}
selectMessageByFolderAndUid(sFolder, sUid) {
if (sFolder && sUid) {
selectMessageByFolderAndUid(sFolder, iUid) {
if (sFolder && iUid) {
this.message(this.staticMessage.populateByMessageListItem(null));
this.message().folder = sFolder;
this.message().uid = sUid;
this.message().uid = iUid;
this.populateMessageBody(this.message());
} else {
@ -671,7 +671,7 @@ export const MessageUserStore = new class {
this.listCount(iCount);
this.listSearch(pString(collection.Search));
this.listPage(Math.ceil(iOffset / SettingsUserStore.messagesPerPage() + 1));
this.listThreadUid(pString(data.Result.ThreadUid));
this.listThreadUid(data.Result.ThreadUid);
this.listEndFolder(collection.Folder);
this.listEndSearch(this.listSearch());

View file

@ -170,7 +170,7 @@ class ComposePopupView extends AbstractViewPopup {
showReplyTo: false,
draftFolder: '',
draftUid: '',
draftUid: 0,
sending: false,
saving: false,
@ -465,7 +465,7 @@ class ComposePopupView extends AbstractViewPopup {
if (this.bFromDraft) {
const message = MessageUserStore.message();
if (message && this.draftFolder() === message.folder && this.draftUid() === message.uid) {
if (message && this.draftFolder() === message.folder && this.draftUid() == message.uid) {
MessageUserStore.message(null);
}
}
@ -1449,7 +1449,7 @@ class ComposePopupView extends AbstractViewPopup {
this.dragAndDropVisible(false);
this.draftFolder('');
this.draftUid('');
this.draftUid(0);
this.sending(false);
this.saving(false);

View file

@ -216,10 +216,10 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
);
addEventListener('mailbox.message.show', e => {
const sFolder = e.detail.Folder, sUid = e.detail.Uid;
const sFolder = e.detail.Folder, iUid = e.detail.Uid;
const message = MessageUserStore.list.find(
item => item && sFolder === item.folder && sUid === item.uid
item => item && sFolder === item.folder && iUid == item.uid
);
if ('INBOX' === sFolder) {
@ -233,7 +233,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
rl.route.setHash(mailBox(sFolder, 1));
}
MessageUserStore.selectMessageByFolderAndUid(sFolder, sUid);
MessageUserStore.selectMessageByFolderAndUid(sFolder, iUid);
}
});
@ -473,10 +473,10 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
/**
* @param {string} sFolderFullNameRaw
* @param {number} iSetAction
* @param {string} sThreadUid = ''
* @param {number} iThreadUid = ''
* @returns {void}
*/
setActionForAll(sFolderFullNameRaw, iSetAction, sThreadUid = '') {
setActionForAll(sFolderFullNameRaw, iSetAction, iThreadUid = 0) {
if (sFolderFullNameRaw) {
let cnt = 0;
const uids = [];
@ -496,7 +496,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
uids.push(message.uid);
});
if (sThreadUid) {
if (iThreadUid) {
folder.messageCountUnread(folder.messageCountUnread() - cnt);
if (0 > folder.messageCountUnread()) {
folder.messageCountUnread(0);
@ -508,7 +508,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
MessageFlagsCache.clearFolder(sFolderFullNameRaw);
}
Remote.messageSetSeenToAll(()=>0, sFolderFullNameRaw, true, sThreadUid ? uids : null);
Remote.messageSetSeenToAll(()=>0, sFolderFullNameRaw, true, iThreadUid ? uids : null);
break;
case MessageSetAction.UnsetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw);
@ -522,7 +522,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
uids.push(message.uid);
});
if (sThreadUid) {
if (iThreadUid) {
folder.messageCountUnread(folder.messageCountUnread() + cnt);
if (folder.messageCountAll() < folder.messageCountUnread()) {
folder.messageCountUnread(folder.messageCountAll());
@ -534,7 +534,7 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
MessageFlagsCache.clearFolder(sFolderFullNameRaw);
}
Remote.messageSetSeenToAll(()=>0, sFolderFullNameRaw, false, sThreadUid ? uids : null);
Remote.messageSetSeenToAll(()=>0, sFolderFullNameRaw, false, iThreadUid ? uids : null);
break;
// no default
}
@ -702,15 +702,15 @@ export class MessageListMailBoxUserView extends AbstractViewRight {
eqs(event, '.checkboxCheckAll') && this.checkAll(!this.checkAll());
el = eqs(event, '.messageListItem .flagParent');
el = eqs(event, '.flagParent');
el && this.flagMessages(ko.dataFor(el));
el = eqs(event, '.messageListItem .threads-len');
el = eqs(event, '.threads-len');
el && this.gotoThread(ko.dataFor(el));
});
dom.addEventListener('dblclick', event => {
let el = eqs(event, '.messageListItem .actionHandle');
let el = eqs(event, '.actionHandle');
el && this.gotoThread(ko.dataFor(el));
});