Implemented FxA

This commit is contained in:
Danny Coates 2018-08-07 15:40:17 -07:00
parent 70bc2b7656
commit 718d74fa50
No known key found for this signature in database
GPG key ID: 4C442633C62E00CB
40 changed files with 1306 additions and 651 deletions

View file

@ -1,4 +1,4 @@
/* global MAXFILESIZE */
/* global LIMITS */
import { blobStream, concatStream } from './streams';
function isDupe(newFile, array) {
@ -15,7 +15,7 @@ function isDupe(newFile, array) {
}
export default class Archive {
constructor(files) {
constructor(files = []) {
this.files = Array.from(files);
}
@ -49,20 +49,19 @@ export default class Archive {
return concatStream(this.files.map(file => blobStream(file)));
}
addFiles(files) {
addFiles(files, maxSize) {
if (this.files.length + files.length > LIMITS.MAX_FILES_PER_ARCHIVE) {
throw new Error('tooManyFiles');
}
const newFiles = files.filter(file => !isDupe(file, this.files));
const newSize = newFiles.reduce((total, file) => total + file.size, 0);
if (this.size + newSize > MAXFILESIZE) {
return false;
if (this.size + newSize > maxSize) {
throw new Error('fileTooBig');
}
this.files = this.files.concat(newFiles);
return true;
}
checkSize() {
return this.size <= MAXFILESIZE;
}
remove(index) {
this.files.splice(index, 1);
}