Small fixes

This commit is contained in:
RainLoop Team 2016-12-15 00:56:17 +03:00
parent d3f8fa4308
commit 0e9cffd657
10 changed files with 150 additions and 89 deletions

View file

@ -513,23 +513,26 @@ class MessageListMailBoxUserView extends AbstractViewNext
/**
* @param {string} sFolderFullNameRaw
* @param {string|bool} mUid
* @param {number} iSetAction
* @param {Array=} aMessages = null
* @returns {void}
*/
setAction(sFolderFullNameRaw, mUid, iSetAction, aMessages) {
getApp().messageListAction(sFolderFullNameRaw, mUid, iSetAction, aMessages);
setAction(sFolderFullNameRaw, iSetAction, aMessages) {
getApp().messageListAction(sFolderFullNameRaw, iSetAction, aMessages);
}
/**
* @param {string} sFolderFullNameRaw
* @param {number} iSetAction
* @param {string} sThreadUid = ''
* @returns {void}
*/
setActionForAll(sFolderFullNameRaw, iSetAction) {
setActionForAll(sFolderFullNameRaw, iSetAction, sThreadUid = '') {
if ('' !== sFolderFullNameRaw)
{
let cnt = 0;
const uids = [];
let folder = getFolderFromCacheList(sFolderFullNameRaw);
if (folder)
{
@ -540,27 +543,64 @@ class MessageListMailBoxUserView extends AbstractViewNext
if (folder)
{
_.each(MessageStore.messageList(), (message) => {
if (message.unseen())
{
cnt++;
}
message.unseen(false);
uids.push(message.uid);
});
folder.messageCountUnread(0);
if (sThreadUid)
{
folder.messageCountUnread(folder.messageCountUnread() - cnt);
if (0 > folder.messageCountUnread())
{
folder.messageCountUnread(0);
}
}
else
{
folder.messageCountUnread(0);
}
clearMessageFlagsFromCacheByFolder(sFolderFullNameRaw);
}
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, true);
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, true, sThreadUid ? uids : null);
break;
case MessageSetAction.UnsetSeen:
folder = getFolderFromCacheList(sFolderFullNameRaw);
if (folder)
{
_.each(MessageStore.messageList(), (message) => {
if (!message.unseen())
{
cnt++;
}
message.unseen(true);
uids.push(message.uid);
});
folder.messageCountUnread(folder.messageCountAll());
if (sThreadUid)
{
folder.messageCountUnread(folder.messageCountUnread() + cnt);
if (folder.messageCountAll() < folder.messageCountUnread())
{
folder.messageCountUnread(folder.messageCountAll());
}
}
else
{
folder.messageCountUnread(folder.messageCountAll());
}
clearMessageFlagsFromCacheByFolder(sFolderFullNameRaw);
}
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, false);
Remote.messageSetSeenToAll(noop, sFolderFullNameRaw, false, sThreadUid ? uids : null);
break;
// no default
}
@ -571,26 +611,26 @@ class MessageListMailBoxUserView extends AbstractViewNext
}
listSetSeen() {
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
this.setAction(FolderStore.currentFolderFullNameRaw(),
MessageSetAction.SetSeen, MessageStore.messageListCheckedOrSelected());
}
listSetAllSeen() {
this.setActionForAll(FolderStore.currentFolderFullNameRaw(), MessageSetAction.SetSeen);
this.setActionForAll(FolderStore.currentFolderFullNameRaw(), MessageSetAction.SetSeen, this.messageListEndThreadUid());
}
listUnsetSeen() {
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
this.setAction(FolderStore.currentFolderFullNameRaw(),
MessageSetAction.UnsetSeen, MessageStore.messageListCheckedOrSelected());
}
listSetFlags() {
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
this.setAction(FolderStore.currentFolderFullNameRaw(),
MessageSetAction.SetFlag, MessageStore.messageListCheckedOrSelected());
}
listUnsetFlags() {
this.setAction(FolderStore.currentFolderFullNameRaw(), true,
this.setAction(FolderStore.currentFolderFullNameRaw(),
MessageSetAction.UnsetFlag, MessageStore.messageListCheckedOrSelected());
}
@ -601,12 +641,12 @@ class MessageListMailBoxUserView extends AbstractViewNext
const checkedUids = _.map(checked, (message) => message.uid);
if (0 < checkedUids.length && -1 < inArray(currentMessage.uid, checkedUids))
{
this.setAction(currentMessage.folderFullNameRaw, true, currentMessage.flagged() ?
this.setAction(currentMessage.folderFullNameRaw, currentMessage.flagged() ?
MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
}
else
{
this.setAction(currentMessage.folderFullNameRaw, true, currentMessage.flagged() ?
this.setAction(currentMessage.folderFullNameRaw, currentMessage.flagged() ?
MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, [currentMessage]);
}
}
@ -619,12 +659,12 @@ class MessageListMailBoxUserView extends AbstractViewNext
if (isUnd(bFlag))
{
const flagged = _.filter(checked, (message) => message.flagged());
this.setAction(checked[0].folderFullNameRaw, true,
this.setAction(checked[0].folderFullNameRaw,
checked.length === flagged.length ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
}
else
{
this.setAction(checked[0].folderFullNameRaw, true,
this.setAction(checked[0].folderFullNameRaw,
!bFlag ? MessageSetAction.UnsetFlag : MessageSetAction.SetFlag, checked);
}
}
@ -637,12 +677,12 @@ class MessageListMailBoxUserView extends AbstractViewNext
if (isUnd(seen))
{
const unseen = _.filter(checked, (message) => message.unseen());
this.setAction(checked[0].folderFullNameRaw, true,
this.setAction(checked[0].folderFullNameRaw,
0 < unseen.length ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen, checked);
}
else
{
this.setAction(checked[0].folderFullNameRaw, true,
this.setAction(checked[0].folderFullNameRaw,
seen ? MessageSetAction.SetSeen : MessageSetAction.UnsetSeen, checked);
}
}
@ -676,7 +716,7 @@ class MessageListMailBoxUserView extends AbstractViewNext
clearListIsVisible() {
return '' === this.messageListSearchDesc() && '' === this.messageListError() &&
'' === MessageStore.messageListEndThreadUid() &&
'' === this.messageListEndThreadUid() &&
0 < this.messageList().length && (this.isSpamFolder() || this.isTrashFolder());
}