Fix cross-tab file drag and drop

This commit is contained in:
Cohee
2023-07-08 04:12:17 +03:00
parent 5b40260170
commit 46e1a25d83

View File

@@ -6663,6 +6663,28 @@ function importCharacter(file) {
});
}
async function importFromURL(items, files) {
for (const item of items) {
if (item.type === 'text/uri-list') {
const uriList = await new Promise((resolve) => {
item.getAsString((uriList) => { resolve(uriList); });
});
const uris = uriList.split('\n').filter(uri => uri.trim() !== '');
try {
for (const uri of uris) {
const request = await fetch(uri);
const data = await request.blob();
const fileName = request.headers.get('Content-Disposition')?.split('filename=')[1]?.replace(/"/g, '') || uri.split('/').pop() || 'file.png';
const file = new File([data], fileName, { type: data.type });
files.push(file);
}
} catch (error) {
console.error('Failed to import from URL', error);
}
}
}
}
const isPwaMode = window.navigator.standalone;
if (isPwaMode) { $("body").addClass('PWA') }
@@ -8409,12 +8431,13 @@ $(document).ready(function () {
$dropzone.removeClass('dragover');
});
$dropzone.on('drop', (event) => {
$dropzone.on('drop', async (event) => {
event.preventDefault();
event.stopPropagation();
$dropzone.removeClass('dragover');
const files = event.originalEvent.dataTransfer.files;
const files = Array.from(event.originalEvent.dataTransfer.files);
await importFromURL(event.originalEvent.dataTransfer.items, files);
processDroppedFiles(files);
});