mirror of
https://github.com/schlagmichdoch/PairDrop.git
synced 2025-04-23 00:06:18 -04:00
implement File Handler API
This commit is contained in:
parent
6748cc0cb4
commit
7936f123c2
5 changed files with 227 additions and 3 deletions
|
@ -263,6 +263,7 @@ class Peer {
|
|||
this._fileHeaderRequested = header;
|
||||
let bytesCompleted = 0;
|
||||
|
||||
zipper.createNewZipWriter();
|
||||
for (let i=0; i<files.length; i++) {
|
||||
const entry = await zipper.addFile(files[i], {
|
||||
onprogress: (progress, total) => {
|
||||
|
|
|
@ -535,6 +535,7 @@ class ReceiveFileDialog extends ReceiveDialog {
|
|||
description = `${files[0].name} and ${files.length-1} other ${files.length>2 ? "files" : "file"}`;
|
||||
size = this._formatFileSize(completeSize);
|
||||
|
||||
zipper.createNewZipWriter();
|
||||
for (let i=0; i<files.length; i++) {
|
||||
await zipper.addFile(files[i]);
|
||||
}
|
||||
|
@ -1151,6 +1152,28 @@ class WebShareTargetUI {
|
|||
}
|
||||
}
|
||||
|
||||
class WebFileHandlersUI {
|
||||
constructor() {
|
||||
if ("launchQueue" in window) {
|
||||
launchQueue.setConsumer(async launchParams => {
|
||||
console.log("Launched with: ", launchParams);
|
||||
if (!launchParams.files.length)
|
||||
return;
|
||||
let files = [];
|
||||
|
||||
for (let i=0; i<launchParams.files.length; i++) {
|
||||
if (i !== 0 && await launchParams.files[i].isSameEntry(launchParams.files[i-1])) continue;
|
||||
const fileHandle = launchParams.files[i];
|
||||
const file = await fileHandle.getFile();
|
||||
files.push(file);
|
||||
}
|
||||
Events.fire('activate-paste-mode', {files: files, text: ""})
|
||||
launchParams = null;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class NoSleepUI {
|
||||
constructor() {
|
||||
NoSleepUI._nosleep = new NoSleep();
|
||||
|
@ -1363,6 +1386,7 @@ class PairDrop {
|
|||
const notifications = new Notifications();
|
||||
const networkStatusUI = new NetworkStatusUI();
|
||||
const webShareTargetUI = new WebShareTargetUI();
|
||||
const webFileHandlersUI = new WebFileHandlersUI();
|
||||
const noSleepUI = new NoSleepUI();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -41,10 +41,10 @@ const zipper = (() => {
|
|||
|
||||
let zipWriter;
|
||||
return {
|
||||
createNewZipWriter() {
|
||||
zipWriter = new zip.ZipWriter(new zip.BlobWriter("application/zip"), { bufferedWrite: true, level: 0 });
|
||||
},
|
||||
addFile(file, options) {
|
||||
if (!zipWriter) {
|
||||
zipWriter = new zip.ZipWriter(new zip.BlobWriter("application/zip"), { bufferedWrite: true, level: 0 });
|
||||
}
|
||||
return zipWriter.add(file.name, new zip.BlobReader(file), options);
|
||||
},
|
||||
async getBlobURL() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue