Fix share mode by converting FileList to Array

This commit is contained in:
schlagmichdoch 2025-02-13 12:52:33 +01:00
parent ec520248b8
commit 351e7d42c9
3 changed files with 17 additions and 11 deletions

View file

@ -1082,7 +1082,7 @@ class PeersManager {
}
async _onFilesSelected(message) {
let files = await mime.addMissingMimeTypesToFiles(message.files);
let files = mime.addMissingMimeTypesToFiles(message.files);
await this.peers[message.to].requestFileTransfer(files);
}

View file

@ -179,10 +179,13 @@ class PeersUI {
this._onDragEnd();
if ($$('x-peer') || !$$('x-peer').contains(e.target)) return; // dropped on peer
if ($$('x-peer') && $$('x-peer').contains(e.target)) return; // dropped on peer
const files = e.dataTransfer.files;
const text = e.dataTransfer.getData("text");
let files = e.dataTransfer.files;
let text = e.dataTransfer.getData("text");
// convert FileList to Array
files = [...files];
if (files.length > 0) {
Events.fire('activate-share-mode', {
@ -215,8 +218,11 @@ class PeersUI {
if (this.shareMode.active || Dialog.anyDialogShown()) return;
e.preventDefault()
const files = e.clipboardData.files;
const text = e.clipboardData.getData("Text");
let files = e.clipboardData.files;
let text = e.clipboardData.getData("Text");
// convert FileList to Array
files = [...files];
if (files.length > 0) {
Events.fire('activate-share-mode', {files: files});

View file

@ -396,20 +396,20 @@ const mime = (() => {
}
return {
async guessMimeByFilename(filename) {
guessMimeByFilename(filename) {
const split = filename.split('.');
if (split.length === 1) {
// Filename does not include suffix
return "";
return false;
}
const suffix = split[split.length - 1].toLowerCase();
return suffixToMimeMap[suffix] || "";
return suffixToMimeMap[suffix];
},
async addMissingMimeTypesToFiles(files) {
addMissingMimeTypesToFiles(files) {
// if filetype is empty guess via suffix otherwise leave unchanged
for (let i = 0; i < files.length; i++) {
if (!files[i].type) {
files[i] = new File([files[i]], files[i].name, {type: await mime.guessMimeByFilename(files[i].name) || ""});
files[i] = new File([files[i]], files[i].name, {type: mime.guessMimeByFilename(files[i].name) || ""});
}
}
return files;