mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-08 22:18:28 +03:00
IMAP UID is integer
This commit is contained in:
parent
9ffc90946c
commit
96e2e6576c
20 changed files with 124 additions and 139 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 : [];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue