Merge branch 'master' of https://github.com/Murena-SAS/snappymail into dev/sync-nextcloud-addressbook

This commit is contained in:
Akhil 2023-09-04 15:30:50 +05:30
commit ae7e00859c
No known key found for this signature in database
GPG key ID: A8AB680DBB7F3D45
41 changed files with 3127 additions and 347 deletions

View file

@ -10,6 +10,8 @@ let __themeTimer = 0;
export const
// Also see Styles/_Values.less @maxMobileWidth
isMobile = matchMedia('(max-width: 799px)'),
// https://github.com/the-djmaze/snappymail/issues/1150
// isSmall = matchMedia('(max-width: 1400px)'),
ThemeStore = {
theme: ko.observable(''),
@ -104,6 +106,9 @@ addSubscribablesTo(ThemeStore, {
isMobile.onchange = e => {
ThemeStore.isMobile(e.matches);
$htmlCL.toggle('rl-mobile', e.matches);
leftPanelDisabled(e.matches);
/*$htmlCL.contains('sm-msgView-side') || */leftPanelDisabled(e.matches);
};
isMobile.onchange(isMobile);
//isSmall.onchange = e => $htmlCL.contains('sm-msgView-side') && leftPanelDisabled(e.matches);
//isSmall.onchange(isSmall);

View file

@ -166,9 +166,9 @@ MessagelistUserStore.notifyNewMessages = (folder, newMessages) => {
}
MessagelistUserStore.canAutoSelect = () =>
!/is:unseen/.test(MessagelistUserStore.mainSearch())
&& !disableAutoSelect()
!disableAutoSelect()
&& SettingsUserStore.usePreviewPane();
// && !SettingsUserStore.showNextMessage();
let prevFolderName;
@ -222,7 +222,7 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
fCallback = (iError, oData, bCached) => {
let error = '';
if (iError) {
if ('reload' != oData?.reason) {
if ('reload' != oData?.name) {
error = getNotification(iError);
MessagelistUserStore.loading(false);
// if (Notifications.RequestAborted !== iError) {
@ -399,53 +399,92 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
* @param {string=} toFolderFullName = ''
* @param {boolean=} copy = false
*/
MessagelistUserStore.removeMessagesFromList = (
MessagelistUserStore.moveMessages = (
fromFolderFullName, oUids, toFolderFullName = '', copy = false
) => {
const fromFolder = getFolderFromCacheList(fromFolderFullName);
if (!fromFolder || !oUids?.size) return;
let unseenCount = 0,
setPage = 0,
currentMessage = MessageUserStore.message();
const trashFolder = FolderUserStore.trashFolder(),
const toFolder = toFolderFullName ? getFolderFromCacheList(toFolderFullName) : null,
trashFolder = FolderUserStore.trashFolder(),
spamFolder = FolderUserStore.spamFolder(),
fromFolder = getFolderFromCacheList(fromFolderFullName),
toFolder = toFolderFullName ? getFolderFromCacheList(toFolderFullName) : null,
page = MessagelistUserStore.page(),
messages =
FolderUserStore.currentFolderFullName() === fromFolderFullName
? MessagelistUserStore.filter(item => item && oUids.has(item.uid))
: [];
: [],
moveOrDeleteResponseHelper = (iError, oData) => {
if (iError) {
setFolderETag(FolderUserStore.currentFolderFullName(), '');
alert(getNotification(iError));
} else if (FolderUserStore.currentFolder()) {
if (2 === arrayLength(oData.Result)) {
setFolderETag(oData.Result[0], oData.Result[1]);
} else {
setFolderETag(FolderUserStore.currentFolderFullName(), '');
}
MessagelistUserStore.count(MessagelistUserStore.count() - oUids.size);
if (page > MessagelistUserStore.pageCount()) {
setPage = MessagelistUserStore.pageCount();
}
if (MessagelistUserStore.threadUid()
&& MessagelistUserStore.length
&& MessagelistUserStore.find(item => item?.deleted() && item.uid == MessagelistUserStore.threadUid())
) {
const message = MessagelistUserStore.find(item => item && !item.deleted());
if (!message) {
if (1 < page) {
setPage = page - 1;
} else {
MessagelistUserStore.threadUid(0);
setPage = MessagelistUserStore.pageBeforeThread();
}
} else if (MessagelistUserStore.threadUid() != message.uid) {
MessagelistUserStore.threadUid(message.uid);
setPage = page;
}
}
if (setPage) {
MessagelistUserStore.page(setPage);
replaceHash(
mailBox(
FolderUserStore.currentFolderFullNameHash(),
setPage,
MessagelistUserStore.listSearch(),
MessagelistUserStore.threadUid()
)
);
}
MessagelistUserStore.reload(!MessagelistUserStore.count());
}
};
messages.forEach(item => item?.isUnseen() && ++unseenCount);
if (fromFolder) {
if (!copy) {
fromFolder.etag = '';
if (!copy) {
fromFolder.totalEmails(
0 <= fromFolder.totalEmails() - oUids.size ? fromFolder.totalEmails() - oUids.size : 0
);
if (0 < unseenCount) {
fromFolder.unreadEmails(Math.max(0, fromFolder.unreadEmails() - unseenCount));
}
}
fromFolder.totalEmails(Math.max(0, fromFolder.totalEmails() - oUids.size));
fromFolder.unreadEmails(Math.max(0, fromFolder.unreadEmails() - unseenCount));
}
if (toFolder) {
toFolder.etag = '';
if (trashFolder === toFolder.fullName || spamFolder === toFolder.fullName) {
unseenCount = 0;
}
toFolder.totalEmails(toFolder.totalEmails() + oUids.size);
if (0 < unseenCount) {
if (trashFolder !== toFolder.fullName && spamFolder !== toFolder.fullName) {
toFolder.unreadEmails(toFolder.unreadEmails() + unseenCount);
}
toFolder.actionBlink(true);
}
if (messages.length) {
disableAutoSelect(true);
if (copy) {
messages.forEach(item => item.checked(false));
} else {
@ -468,49 +507,37 @@ MessagelistUserStore.removeMessagesFromList = (
currentMessage = null;
MessageUserStore.message(null);
}
item.deleted(true);
MessagelistUserStore.remove(item);
});
setTimeout(() => messages.forEach(item => MessagelistUserStore.remove(item)), 350);
const
count = MessagelistUserStore.count() - messages.length,
page = MessagelistUserStore.page();
MessagelistUserStore.count(count);
if (page > MessagelistUserStore.pageCount()) {
setPage = MessagelistUserStore.pageCount();
}
}
}
if (MessagelistUserStore.threadUid()
&& MessagelistUserStore.length
&& MessagelistUserStore.find(item => item?.deleted() && item.uid == MessagelistUserStore.threadUid())
) {
const message = MessagelistUserStore.find(item => item && !item.deleted());
if (!message) {
if (1 < MessagelistUserStore.page()) {
setPage = MessagelistUserStore.page() - 1;
if (toFolderFullName) {
if (toFolder && fromFolderFullName != toFolderFullName) {
const params = {
fromFolder: fromFolderFullName,
toFolder: toFolderFullName,
uids: [...oUids].join(',')
};
if (copy) {
Remote.request('MessageCopy', null, params);
} else {
MessagelistUserStore.threadUid(0);
setPage = MessagelistUserStore.pageBeforeThread();
const
isSpam = spamFolder === toFolderFullName,
isHam = !isSpam && spamFolder === fromFolderFullName && getFolderInboxName() === toFolderFullName;
params.markAsRead = (isSpam || FolderUserStore.trashFolder() === toFolderFullName) ? 1 : 0;
params.learning = isSpam ? 'SPAM' : isHam ? 'HAM' : '';
Remote.abort('MessageList', 'reload').request('MessageMove', moveOrDeleteResponseHelper, params);
}
} else if (MessagelistUserStore.threadUid() != message.uid) {
MessagelistUserStore.threadUid(message.uid);
setPage = MessagelistUserStore.page();
}
}
if (setPage) {
MessagelistUserStore.page(setPage);
replaceHash(
mailBox(
FolderUserStore.currentFolderFullNameHash(),
setPage,
MessagelistUserStore.listSearch(),
MessagelistUserStore.threadUid()
)
} else {
Remote.abort('MessageList', 'reload').request('MessageDelete',
moveOrDeleteResponseHelper,
{
folder: fromFolderFullName,
uids: [...oUids].join(',')
}
);
}
};