changed to handle 404 during download, also removing progress listener once percent completion is 100 to avoid manipulating DOM twice
This commit is contained in:
parent
028b6400cb
commit
f80c0b5b1d
2 changed files with 16 additions and 2 deletions
|
@ -15,6 +15,8 @@ let download = () => {
|
||||||
progress.innerText = `Progress: ${percentComplete}%`;
|
progress.innerText = `Progress: ${percentComplete}%`;
|
||||||
|
|
||||||
if (percentComplete === 100) {
|
if (percentComplete === 100) {
|
||||||
|
fileReceiver.removeAllListeners('progress');
|
||||||
|
|
||||||
let finished = document.createElement('p');
|
let finished = document.createElement('p');
|
||||||
finished.innerText = 'Your download has finished.';
|
finished.innerText = 'Your download has finished.';
|
||||||
li.appendChild(finished);
|
li.appendChild(finished);
|
||||||
|
@ -28,7 +30,13 @@ let download = () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
fileReceiver.download().then(([decrypted, fname]) => {
|
fileReceiver.download()
|
||||||
|
.catch((err) => {
|
||||||
|
console.log('The file has expired, or has already been deleted.');
|
||||||
|
document.getElementById('downloaded_files').removeChild(li);
|
||||||
|
return;
|
||||||
|
})
|
||||||
|
.then(([decrypted, fname]) => {
|
||||||
name.innerText = fname;
|
name.innerText = fname;
|
||||||
let dataView = new DataView(decrypted);
|
let dataView = new DataView(decrypted);
|
||||||
let blob = new Blob([dataView]);
|
let blob = new Blob([dataView]);
|
||||||
|
|
|
@ -20,6 +20,11 @@ class FileReceiver extends EventEmitter {
|
||||||
};
|
};
|
||||||
|
|
||||||
xhr.onload = function(e) {
|
xhr.onload = function(e) {
|
||||||
|
|
||||||
|
if (xhr.status === 404) {
|
||||||
|
reject(new Error('The file has expired, or has already been deleted.'));
|
||||||
|
}
|
||||||
|
|
||||||
let blob = new Blob([this.response]);
|
let blob = new Blob([this.response]);
|
||||||
let fileReader = new FileReader();
|
let fileReader = new FileReader();
|
||||||
fileReader.onload = function() {
|
fileReader.onload = function() {
|
||||||
|
@ -52,7 +57,8 @@ class FileReceiver extends EventEmitter {
|
||||||
true,
|
true,
|
||||||
['encrypt', 'decrypt']
|
['encrypt', 'decrypt']
|
||||||
)
|
)
|
||||||
]).then(([fdata, key]) => {
|
])
|
||||||
|
.then(([fdata, key]) => {
|
||||||
let salt = this.salt;
|
let salt = this.salt;
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
window.crypto.subtle.decrypt(
|
window.crypto.subtle.decrypt(
|
||||||
|
|
Loading…
Reference in a new issue