mirror of
https://github.com/schlagmichdoch/PairDrop.git
synced 2025-04-20 15:06:15 -04:00
Truncate file used by the sw-file-digester.js after processing
This commit is contained in:
parent
7c6062e1e0
commit
65936a4d7d
2 changed files with 41 additions and 6 deletions
|
@ -1813,6 +1813,13 @@ class FileDigester {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteFile() {
|
||||||
|
fileWorker.postMessage({
|
||||||
|
type: "delete-file",
|
||||||
|
name: _this._name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function onPart(part) {
|
function onPart(part) {
|
||||||
// remove old chunk from buffer
|
// remove old chunk from buffer
|
||||||
_this._buffer[i] = null;
|
_this._buffer[i] = null;
|
||||||
|
@ -1831,16 +1838,23 @@ class FileDigester {
|
||||||
|
|
||||||
function onFile(file) {
|
function onFile(file) {
|
||||||
_this._buffer = [];
|
_this._buffer = [];
|
||||||
fileWorker.terminate();
|
|
||||||
_this._fileCompleteCallback(file);
|
_this._fileCompleteCallback(file);
|
||||||
|
deleteFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onFileDeleted() {
|
||||||
|
// File Digestion complete -> Tidy up
|
||||||
|
fileWorker.terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onError(error) {
|
function onError(error) {
|
||||||
// an error occurred. Use memory method instead.
|
// an error occurred.
|
||||||
Logger.error(error);
|
Logger.error(error);
|
||||||
Logger.warn('Failed to process file via service-worker. Do not use Firefox private mode to prevent this.')
|
Logger.warn('Failed to process file via service-worker. Do not use Firefox private mode to prevent this.')
|
||||||
fileWorker.terminate();
|
|
||||||
|
// Use memory method instead and tidy up.
|
||||||
_this.processFileViaMemory();
|
_this.processFileViaMemory();
|
||||||
|
fileWorker.terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
sendPart(this._buffer[i], offset);
|
sendPart(this._buffer[i], offset);
|
||||||
|
@ -1853,6 +1867,9 @@ class FileDigester {
|
||||||
case "file":
|
case "file":
|
||||||
onFile(e.data.file);
|
onFile(e.data.file);
|
||||||
break;
|
break;
|
||||||
|
case "file-deleted":
|
||||||
|
onFileDeleted();
|
||||||
|
break;
|
||||||
case "error":
|
case "error":
|
||||||
onError(e.data.error);
|
onError(e.data.error);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -7,6 +7,9 @@ self.addEventListener('message', async e => {
|
||||||
case "get-file":
|
case "get-file":
|
||||||
await this.onGetFile(e.data.name);
|
await this.onGetFile(e.data.name);
|
||||||
break;
|
break;
|
||||||
|
case "delete-file":
|
||||||
|
await this.onDeleteFile(e.data.name);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
@ -32,7 +35,9 @@ async function onPart(fileName, buffer, offset) {
|
||||||
// Write the message to the end of the file.
|
// Write the message to the end of the file.
|
||||||
let encodedMessage = new DataView(buffer);
|
let encodedMessage = new DataView(buffer);
|
||||||
accessHandle.write(encodedMessage, { at: offset });
|
accessHandle.write(encodedMessage, { at: offset });
|
||||||
accessHandle.close();
|
|
||||||
|
// Always close FileSystemSyncAccessHandle if done.
|
||||||
|
accessHandle.close(); accessHandle.close();
|
||||||
|
|
||||||
self.postMessage({type: "part", part: encodedMessage});
|
self.postMessage({type: "part", part: encodedMessage});
|
||||||
encodedMessage = null;
|
encodedMessage = null;
|
||||||
|
@ -43,6 +48,19 @@ async function onGetFile(fileName) {
|
||||||
let file = await fileHandle.getFile();
|
let file = await fileHandle.getFile();
|
||||||
|
|
||||||
self.postMessage({type: "file", file: file});
|
self.postMessage({type: "file", file: file});
|
||||||
file = null;
|
}
|
||||||
// Todo: delete file from storage
|
|
||||||
|
async function onDeleteFile(fileName) {
|
||||||
|
const accessHandle = await getAccessHandle(fileName);
|
||||||
|
|
||||||
|
// Truncate the file to 0 bytes
|
||||||
|
accessHandle.truncate(0);
|
||||||
|
|
||||||
|
// Persist changes to disk.
|
||||||
|
accessHandle.flush();
|
||||||
|
|
||||||
|
// Always close FileSystemSyncAccessHandle if done.
|
||||||
|
accessHandle.close();
|
||||||
|
|
||||||
|
self.postMessage({type: "file-deleted"});
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue