mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-06 07:57:02 +03:00
Added: allow dropping local EML files onto any mailbox/folder on the left
This commit is contained in:
parent
e06acbe738
commit
f3e6dda69b
1 changed files with 30 additions and 2 deletions
32
dev/External/User/ko.js
vendored
32
dev/External/User/ko.js
vendored
|
|
@ -11,6 +11,9 @@ import { setExpandedFolder } from 'Model/FolderCollection';
|
||||||
import { FolderUserStore } from 'Stores/User/Folder';
|
import { FolderUserStore } from 'Stores/User/Folder';
|
||||||
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
||||||
|
|
||||||
|
import { Settings } from 'Common/Globals';
|
||||||
|
import { serverRequest } from 'Common/Links';
|
||||||
|
|
||||||
const rlContentType = 'snappymail/action',
|
const rlContentType = 'snappymail/action',
|
||||||
|
|
||||||
// In Chrome we have no access to dataTransfer.getData unless it's the 'drop' event
|
// In Chrome we have no access to dataTransfer.getData unless it's the 'drop' event
|
||||||
|
|
@ -131,9 +134,15 @@ Object.assign(ko.bindingHandlers, {
|
||||||
dragTimer.stop();
|
dragTimer.stop();
|
||||||
},
|
},
|
||||||
fnHover = e => {
|
fnHover = e => {
|
||||||
if (dragMessages()) {
|
let files = false;
|
||||||
|
// if (e.dataTransfer.types.includes('Files'))
|
||||||
|
for (const item of e.dataTransfer.items) {
|
||||||
|
files |= 'file' === item.kind && 'message/rfc822' === item.type;
|
||||||
|
}
|
||||||
|
if (files || dragMessages()) {
|
||||||
fnStop(e);
|
fnStop(e);
|
||||||
e.dataTransfer.dropEffect = e.ctrlKey ? 'copy' : 'move';
|
files && e.stopPropagation();
|
||||||
|
e.dataTransfer.dropEffect = files ? 'copy' : (e.ctrlKey ? 'copy' : 'move');
|
||||||
element.classList.add('droppableHover');
|
element.classList.add('droppableHover');
|
||||||
if (folder.collapsed()) {
|
if (folder.collapsed()) {
|
||||||
dragTimer.start(() => {
|
dragTimer.start(() => {
|
||||||
|
|
@ -151,6 +160,25 @@ Object.assign(ko.bindingHandlers, {
|
||||||
fnStop(e);
|
fnStop(e);
|
||||||
if (dragMessages() && 'copyMove' == e.dataTransfer.effectAllowed) {
|
if (dragMessages() && 'copyMove' == e.dataTransfer.effectAllowed) {
|
||||||
moveMessagesToFolder(FolderUserStore.currentFolderFullName(), dragData.data, folder.fullName, e.ctrlKey);
|
moveMessagesToFolder(FolderUserStore.currentFolderFullName(), dragData.data, folder.fullName, e.ctrlKey);
|
||||||
|
} else if (e.dataTransfer.types.includes('Files')) {
|
||||||
|
for (const file of e.dataTransfer.files) {
|
||||||
|
if ('message/rfc822' === file.type) {
|
||||||
|
let data = new FormData;
|
||||||
|
data.append('Folder', folder.fullName);
|
||||||
|
data.append('AppendFile', file);
|
||||||
|
data.XToken = Settings.app('token');
|
||||||
|
fetch(serverRequest('Append'), {
|
||||||
|
method: 'POST',
|
||||||
|
mode: 'same-origin',
|
||||||
|
cache: 'no-cache',
|
||||||
|
redirect: 'error',
|
||||||
|
referrerPolicy: 'no-referrer',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
body: data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// TODO: when all are uploaded -> MessagelistUserStore.reload(true, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue