mirror of
https://github.com/schlagmichdoch/PairDrop.git
synced 2025-04-22 07:46:17 -04:00
FIX add mime types to files if missing -> needed for correct sharing via share-menu on ios
This commit is contained in:
parent
000cdb2f70
commit
d9c3d5172a
3 changed files with 321 additions and 3 deletions
|
@ -5,7 +5,6 @@ if (!crypto.subtle && localStorage.getItem('unsecure_warning') !== 'received') {
|
||||||
alert("PairDrops functionality to compare received with requested files works in secure contexts only (https or localhost).")
|
alert("PairDrops functionality to compare received with requested files works in secure contexts only (https or localhost).")
|
||||||
localStorage.setItem('unsecure_warning', 'received')
|
localStorage.setItem('unsecure_warning', 'received')
|
||||||
}
|
}
|
||||||
|
|
||||||
class ServerConnection {
|
class ServerConnection {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -697,7 +696,20 @@ class PeersManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
_onFilesSelected(message) {
|
_onFilesSelected(message) {
|
||||||
this.peers[message.to].requestFileTransfer(message.files);
|
const files = this._addTypeIfMissing(message.files);
|
||||||
|
this.peers[message.to].requestFileTransfer(files);
|
||||||
|
}
|
||||||
|
|
||||||
|
_addTypeIfMissing(files) {
|
||||||
|
let filesWithType = [], file;
|
||||||
|
for (let i=0; i<files.length; i++) {
|
||||||
|
// when filename is empty guess via suffix
|
||||||
|
file = files[i].type
|
||||||
|
? files[i]
|
||||||
|
: new File([files[i]], files[i].name, {type: mime.getMimeByFilename(files[i].name)});
|
||||||
|
filesWithType.push(file)
|
||||||
|
}
|
||||||
|
return filesWithType;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onSendText(message) {
|
_onSendText(message) {
|
||||||
|
|
|
@ -639,7 +639,7 @@ class ReceiveRequestDialog extends ReceiveDialog {
|
||||||
if (request.thumbnailDataUrl) {
|
if (request.thumbnailDataUrl) {
|
||||||
let element = document.createElement('img');
|
let element = document.createElement('img');
|
||||||
element.src = request.thumbnailDataUrl;
|
element.src = request.thumbnailDataUrl;
|
||||||
element.classList = 'element-preview'
|
element.classList.add('element-preview');
|
||||||
|
|
||||||
this.$previewBox.style.display = 'block';
|
this.$previewBox.style.display = 'block';
|
||||||
this.$previewBox.appendChild(element)
|
this.$previewBox.appendChild(element)
|
||||||
|
|
|
@ -74,3 +74,309 @@ const zipper = (() => {
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
const mime = (() => {
|
||||||
|
|
||||||
|
return {
|
||||||
|
getMimeByFilename(filename) {
|
||||||
|
try {
|
||||||
|
const arr = filename.split('.');
|
||||||
|
const suffix = arr[arr.length - 1];
|
||||||
|
return {
|
||||||
|
"cpl": "application/cpl+xml",
|
||||||
|
"gpx": "application/gpx+xml",
|
||||||
|
"gz": "application/gzip",
|
||||||
|
"jar": "application/java-archive",
|
||||||
|
"war": "application/java-archive",
|
||||||
|
"ear": "application/java-archive",
|
||||||
|
"class": "application/java-vm",
|
||||||
|
"js": "application/javascript",
|
||||||
|
"mjs": "application/javascript",
|
||||||
|
"json": "application/json",
|
||||||
|
"map": "application/json",
|
||||||
|
"webmanifest": "application/manifest+json",
|
||||||
|
"doc": "application/msword",
|
||||||
|
"dot": "application/msword",
|
||||||
|
"wiz": "application/msword",
|
||||||
|
"bin": "application/octet-stream",
|
||||||
|
"dms": "application/octet-stream",
|
||||||
|
"lrf": "application/octet-stream",
|
||||||
|
"mar": "application/octet-stream",
|
||||||
|
"so": "application/octet-stream",
|
||||||
|
"dist": "application/octet-stream",
|
||||||
|
"distz": "application/octet-stream",
|
||||||
|
"pkg": "application/octet-stream",
|
||||||
|
"bpk": "application/octet-stream",
|
||||||
|
"dump": "application/octet-stream",
|
||||||
|
"elc": "application/octet-stream",
|
||||||
|
"deploy": "application/octet-stream",
|
||||||
|
"img": "application/octet-stream",
|
||||||
|
"msp": "application/octet-stream",
|
||||||
|
"msm": "application/octet-stream",
|
||||||
|
"buffer": "application/octet-stream",
|
||||||
|
"oda": "application/oda",
|
||||||
|
"oxps": "application/oxps",
|
||||||
|
"pdf": "application/pdf",
|
||||||
|
"asc": "application/pgp-signature",
|
||||||
|
"sig": "application/pgp-signature",
|
||||||
|
"prf": "application/pics-rules",
|
||||||
|
"p7c": "application/pkcs7-mime",
|
||||||
|
"cer": "application/pkix-cert",
|
||||||
|
"ai": "application/postscript",
|
||||||
|
"eps": "application/postscript",
|
||||||
|
"ps": "application/postscript",
|
||||||
|
"apk": "application/vnd.android.package-archive",
|
||||||
|
"m3u8": "application/vnd.apple.mpegurl",
|
||||||
|
"pkpass": "application/vnd.apple.pkpass",
|
||||||
|
"kml": "application/vnd.google-earth.kml+xml",
|
||||||
|
"kmz": "application/vnd.google-earth.kmz",
|
||||||
|
"cab": "application/vnd.ms-cab-compressed",
|
||||||
|
"xls": "application/vnd.ms-excel",
|
||||||
|
"xlm": "application/vnd.ms-excel",
|
||||||
|
"xla": "application/vnd.ms-excel",
|
||||||
|
"xlc": "application/vnd.ms-excel",
|
||||||
|
"xlt": "application/vnd.ms-excel",
|
||||||
|
"xlw": "application/vnd.ms-excel",
|
||||||
|
"msg": "application/vnd.ms-outlook",
|
||||||
|
"ppt": "application/vnd.ms-powerpoint",
|
||||||
|
"pot": "application/vnd.ms-powerpoint",
|
||||||
|
"ppa": "application/vnd.ms-powerpoint",
|
||||||
|
"pps": "application/vnd.ms-powerpoint",
|
||||||
|
"pwz": "application/vnd.ms-powerpoint",
|
||||||
|
"mpp": "application/vnd.ms-project",
|
||||||
|
"mpt": "application/vnd.ms-project",
|
||||||
|
"xps": "application/vnd.ms-xpsdocument",
|
||||||
|
"odb": "application/vnd.oasis.opendocument.database",
|
||||||
|
"ods": "application/vnd.oasis.opendocument.spreadsheet",
|
||||||
|
"odt": "application/vnd.oasis.opendocument.text",
|
||||||
|
"osm": "application/vnd.openstreetmap.data+xml",
|
||||||
|
"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||||
|
"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||||
|
"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||||
|
"pcap": "application/vnd.tcpdump.pcap",
|
||||||
|
"cap": "application/vnd.tcpdump.pcap",
|
||||||
|
"dmp": "application/vnd.tcpdump.pcap",
|
||||||
|
"wpd": "application/vnd.wordperfect",
|
||||||
|
"wasm": "application/wasm",
|
||||||
|
"7z": "application/x-7z-compressed",
|
||||||
|
"dmg": "application/x-apple-diskimage",
|
||||||
|
"bcpio": "application/x-bcpio",
|
||||||
|
"torrent": "application/x-bittorrent",
|
||||||
|
"cbr": "application/x-cbr",
|
||||||
|
"cba": "application/x-cbr",
|
||||||
|
"cbt": "application/x-cbr",
|
||||||
|
"cbz": "application/x-cbr",
|
||||||
|
"cb7": "application/x-cbr",
|
||||||
|
"vcd": "application/x-cdlink",
|
||||||
|
"crx": "application/x-chrome-extension",
|
||||||
|
"cpio": "application/x-cpio",
|
||||||
|
"csh": "application/x-csh",
|
||||||
|
"deb": "application/x-debian-package",
|
||||||
|
"udeb": "application/x-debian-package",
|
||||||
|
"dvi": "application/x-dvi",
|
||||||
|
"arc": "application/x-freearc",
|
||||||
|
"gtar": "application/x-gtar",
|
||||||
|
"hdf": "application/x-hdf",
|
||||||
|
"h5": "application/x-hdf5",
|
||||||
|
"php": "application/x-httpd-php",
|
||||||
|
"iso": "application/x-iso9660-image",
|
||||||
|
"key": "application/x-iwork-keynote-sffkey",
|
||||||
|
"numbers": "application/x-iwork-numbers-sffnumbers",
|
||||||
|
"pages": "application/x-iwork-pages-sffpages",
|
||||||
|
"latex": "application/x-latex",
|
||||||
|
"run": "application/x-makeself",
|
||||||
|
"mif": "application/x-mif",
|
||||||
|
"lnk": "application/x-ms-shortcut",
|
||||||
|
"mdb": "application/x-msaccess",
|
||||||
|
"exe": "application/x-msdownload",
|
||||||
|
"dll": "application/x-msdownload",
|
||||||
|
"com": "application/x-msdownload",
|
||||||
|
"bat": "application/x-msdownload",
|
||||||
|
"msi": "application/x-msdownload",
|
||||||
|
"pub": "application/x-mspublisher",
|
||||||
|
"cdf": "application/x-netcdf",
|
||||||
|
"nc": "application/x-netcdf",
|
||||||
|
"pl": "application/x-perl",
|
||||||
|
"pm": "application/x-perl",
|
||||||
|
"prc": "application/x-pilot",
|
||||||
|
"pdb": "application/x-pilot",
|
||||||
|
"p12": "application/x-pkcs12",
|
||||||
|
"pfx": "application/x-pkcs12",
|
||||||
|
"ram": "application/x-pn-realaudio",
|
||||||
|
"pyc": "application/x-python-code",
|
||||||
|
"pyo": "application/x-python-code",
|
||||||
|
"rar": "application/x-rar-compressed",
|
||||||
|
"rpm": "application/x-redhat-package-manager",
|
||||||
|
"sh": "application/x-sh",
|
||||||
|
"shar": "application/x-shar",
|
||||||
|
"swf": "application/x-shockwave-flash",
|
||||||
|
"sql": "application/x-sql",
|
||||||
|
"srt": "application/x-subrip",
|
||||||
|
"sv4cpio": "application/x-sv4cpio",
|
||||||
|
"sv4crc": "application/x-sv4crc",
|
||||||
|
"gam": "application/x-tads",
|
||||||
|
"tar": "application/x-tar",
|
||||||
|
"tcl": "application/x-tcl",
|
||||||
|
"tex": "application/x-tex",
|
||||||
|
"roff": "application/x-troff",
|
||||||
|
"t": "application/x-troff",
|
||||||
|
"tr": "application/x-troff",
|
||||||
|
"man": "application/x-troff-man",
|
||||||
|
"me": "application/x-troff-me",
|
||||||
|
"ms": "application/x-troff-ms",
|
||||||
|
"ustar": "application/x-ustar",
|
||||||
|
"src": "application/x-wais-source",
|
||||||
|
"xpi": "application/x-xpinstall",
|
||||||
|
"xhtml": "application/xhtml+xml",
|
||||||
|
"xht": "application/xhtml+xml",
|
||||||
|
"xsl": "application/xml",
|
||||||
|
"rdf": "application/xml",
|
||||||
|
"wsdl": "application/xml",
|
||||||
|
"xpdl": "application/xml",
|
||||||
|
"zip": "application/zip",
|
||||||
|
"3gp": "audio/3gp",
|
||||||
|
"3gpp": "audio/3gpp",
|
||||||
|
"3g2": "audio/3gpp2",
|
||||||
|
"3gpp2": "audio/3gpp2",
|
||||||
|
"aac": "audio/aac",
|
||||||
|
"adts": "audio/aac",
|
||||||
|
"loas": "audio/aac",
|
||||||
|
"ass": "audio/aac",
|
||||||
|
"au": "audio/basic",
|
||||||
|
"snd": "audio/basic",
|
||||||
|
"mid": "audio/midi",
|
||||||
|
"midi": "audio/midi",
|
||||||
|
"kar": "audio/midi",
|
||||||
|
"rmi": "audio/midi",
|
||||||
|
"mpga": "audio/mpeg",
|
||||||
|
"mp2": "audio/mpeg",
|
||||||
|
"mp2a": "audio/mpeg",
|
||||||
|
"mp3": "audio/mpeg",
|
||||||
|
"m2a": "audio/mpeg",
|
||||||
|
"m3a": "audio/mpeg",
|
||||||
|
"oga": "audio/ogg",
|
||||||
|
"ogg": "audio/ogg",
|
||||||
|
"spx": "audio/ogg",
|
||||||
|
"opus": "audio/opus",
|
||||||
|
"aif": "audio/x-aiff",
|
||||||
|
"aifc": "audio/x-aiff",
|
||||||
|
"aiff": "audio/x-aiff",
|
||||||
|
"flac": "audio/x-flac",
|
||||||
|
"m4a": "audio/x-m4a",
|
||||||
|
"m3u": "audio/x-mpegurl",
|
||||||
|
"wma": "audio/x-ms-wma",
|
||||||
|
"ra": "audio/x-pn-realaudio",
|
||||||
|
"wav": "audio/x-wav",
|
||||||
|
"otf": "font/otf",
|
||||||
|
"ttf": "font/ttf",
|
||||||
|
"woff": "font/woff",
|
||||||
|
"woff2": "font/woff2",
|
||||||
|
"emf": "image/emf",
|
||||||
|
"gif": "image/gif",
|
||||||
|
"heic": "image/heic",
|
||||||
|
"heif": "image/heif",
|
||||||
|
"ief": "image/ief",
|
||||||
|
"jpeg": "image/jpeg",
|
||||||
|
"jpg": "image/jpeg",
|
||||||
|
"pict": "image/pict",
|
||||||
|
"pct": "image/pict",
|
||||||
|
"pic": "image/pict",
|
||||||
|
"png": "image/png",
|
||||||
|
"svg": "image/svg+xml",
|
||||||
|
"svgz": "image/svg+xml",
|
||||||
|
"tif": "image/tiff",
|
||||||
|
"tiff": "image/tiff",
|
||||||
|
"psd": "image/vnd.adobe.photoshop",
|
||||||
|
"djvu": "image/vnd.djvu",
|
||||||
|
"djv": "image/vnd.djvu",
|
||||||
|
"dwg": "image/vnd.dwg",
|
||||||
|
"dxf": "image/vnd.dxf",
|
||||||
|
"dds": "image/vnd.ms-dds",
|
||||||
|
"webp": "image/webp",
|
||||||
|
"3ds": "image/x-3ds",
|
||||||
|
"ras": "image/x-cmu-raster",
|
||||||
|
"ico": "image/x-icon",
|
||||||
|
"bmp": "image/x-ms-bmp",
|
||||||
|
"pnm": "image/x-portable-anymap",
|
||||||
|
"pbm": "image/x-portable-bitmap",
|
||||||
|
"pgm": "image/x-portable-graymap",
|
||||||
|
"ppm": "image/x-portable-pixmap",
|
||||||
|
"rgb": "image/x-rgb",
|
||||||
|
"tga": "image/x-tga",
|
||||||
|
"xbm": "image/x-xbitmap",
|
||||||
|
"xpm": "image/x-xpixmap",
|
||||||
|
"xwd": "image/x-xwindowdump",
|
||||||
|
"eml": "message/rfc822",
|
||||||
|
"mht": "message/rfc822",
|
||||||
|
"mhtml": "message/rfc822",
|
||||||
|
"nws": "message/rfc822",
|
||||||
|
"obj": "model/obj",
|
||||||
|
"stl": "model/stl",
|
||||||
|
"dae": "model/vnd.collada+xml",
|
||||||
|
"ics": "text/calendar",
|
||||||
|
"ifb": "text/calendar",
|
||||||
|
"css": "text/css",
|
||||||
|
"csv": "text/csv",
|
||||||
|
"html": "text/html",
|
||||||
|
"htm": "text/html",
|
||||||
|
"shtml": "text/html",
|
||||||
|
"markdown": "text/markdown",
|
||||||
|
"md": "text/markdown",
|
||||||
|
"txt": "text/plain",
|
||||||
|
"text": "text/plain",
|
||||||
|
"conf": "text/plain",
|
||||||
|
"def": "text/plain",
|
||||||
|
"list": "text/plain",
|
||||||
|
"log": "text/plain",
|
||||||
|
"in": "text/plain",
|
||||||
|
"ini": "text/plain",
|
||||||
|
"rtx": "text/richtext",
|
||||||
|
"rtf": "text/rtf",
|
||||||
|
"tsv": "text/tab-separated-values",
|
||||||
|
"c": "text/x-c",
|
||||||
|
"cc": "text/x-c",
|
||||||
|
"cxx": "text/x-c",
|
||||||
|
"cpp": "text/x-c",
|
||||||
|
"h": "text/x-c",
|
||||||
|
"hh": "text/x-c",
|
||||||
|
"dic": "text/x-c",
|
||||||
|
"java": "text/x-java-source",
|
||||||
|
"lua": "text/x-lua",
|
||||||
|
"py": "text/x-python",
|
||||||
|
"etx": "text/x-setext",
|
||||||
|
"sgm": "text/x-sgml",
|
||||||
|
"sgml": "text/x-sgml",
|
||||||
|
"vcf": "text/x-vcard",
|
||||||
|
"xml": "text/xml",
|
||||||
|
"xul": "text/xul",
|
||||||
|
"yaml": "text/yaml",
|
||||||
|
"yml": "text/yaml",
|
||||||
|
"ts": "video/mp2t",
|
||||||
|
"mp4": "video/mp4",
|
||||||
|
"mp4v": "video/mp4",
|
||||||
|
"mpg4": "video/mp4",
|
||||||
|
"mpeg": "video/mpeg",
|
||||||
|
"m1v": "video/mpeg",
|
||||||
|
"mpa": "video/mpeg",
|
||||||
|
"mpe": "video/mpeg",
|
||||||
|
"mpg": "video/mpeg",
|
||||||
|
"mov": "video/quicktime",
|
||||||
|
"qt": "video/quicktime",
|
||||||
|
"webm": "video/webm",
|
||||||
|
"flv": "video/x-flv",
|
||||||
|
"m4v": "video/x-m4v",
|
||||||
|
"asf": "video/x-ms-asf",
|
||||||
|
"asx": "video/x-ms-asf",
|
||||||
|
"vob": "video/x-ms-vob",
|
||||||
|
"wmv": "video/x-ms-wmv",
|
||||||
|
"avi": "video/x-msvideo",
|
||||||
|
"*": "video/x-sgi-movie",
|
||||||
|
}[suffix] || '';
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue