Merge pull request #42 from mozilla/refactor-riff

changed to handle 404 during download, also removing progress listene…
This commit is contained in:
Danny Coates 2017-06-02 14:19:02 -07:00 committed by GitHub
commit 1194b93778
2 changed files with 16 additions and 2 deletions

View File

@ -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]);

View File

@ -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(