Merge branch 'master' into release

This commit is contained in:
Abhinav-grd 2021-05-24 11:35:47 +05:30
commit 2a8cd82522
2 changed files with 22 additions and 24 deletions

View file

@ -9,7 +9,7 @@ import {
ErrorHandler,
THUMBNAIL_GENERATION_FAILED,
} from 'utils/common/errorUtil';
import { getDedicatedCryptoWorker } from 'utils/crypto';
import { ComlinkWorker, getDedicatedCryptoWorker } from 'utils/crypto';
import * as convert from 'xml-js';
import { ENCRYPTION_CHUNK_SIZE } from 'types';
import { getToken } from 'utils/common/key';
@ -123,7 +123,7 @@ export enum UPLOAD_STAGES {
}
class UploadService {
private cryptoWorkers = [];
private cryptoWorkers = new Array<ComlinkWorker>(MAX_CONCURRENT_UPLOADS);
private uploadURLs: UploadURL[] = [];
private uploadURLFetchInProgress: Promise<any> = null;
private perFileProgress: number;
@ -135,20 +135,6 @@ class UploadService {
private progressBarProps;
private uploadErrors: Error[];
private existingFilesCollectionWise: Map<number, File[]>;
constructor() {
const main = async () => {
try {
for (let i = 0; i < MAX_CONCURRENT_UPLOADS; i++) {
this.cryptoWorkers.push(
await new (getDedicatedCryptoWorker())()
);
}
} catch (e) {
// ignore
}
};
main();
}
public async uploadFiles(
filesWithCollectionToUpload: FileWithCollection[],
existingFiles: File[],
@ -218,9 +204,10 @@ class UploadService {
i < Math.min(MAX_CONCURRENT_UPLOADS, this.totalFileCount);
i++
) {
this.cryptoWorkers[i] = getDedicatedCryptoWorker();
uploadProcesses.push(
this.uploader(
this.cryptoWorkers[i],
await new this.cryptoWorkers[i].comlink(),
new FileReader(),
this.filesToBeUploaded.pop()
)
@ -234,6 +221,10 @@ class UploadService {
this.filesToBeUploaded = [];
console.error(e);
throw e;
} finally {
for (let i = 0; i < MAX_CONCURRENT_UPLOADS; i++) {
this.cryptoWorkers[i]?.worker.terminate();
}
}
}

View file

@ -7,14 +7,21 @@ import { SESSION_KEYS, setKey } from 'utils/storage/sessionStorage';
import { getData, LS_KEYS, setData } from 'utils/storage/localStorage';
import { getActualKey, getToken } from 'utils/common/key';
import { SetRecoveryKey } from 'services/userService';
export interface ComlinkWorker {
comlink: any;
worker: Worker;
}
const CryptoWorker: any =
runningInBrowser() &&
Comlink.wrap(new Worker('worker/crypto.worker.js', { type: 'module' }));
export const getDedicatedCryptoWorker = (): any =>
runningInBrowser() &&
Comlink.wrap(new Worker('worker/crypto.worker.js', { type: 'module' }));
export const getDedicatedCryptoWorker = (): ComlinkWorker => {
if (runningInBrowser()) {
const worker = new Worker('worker/crypto.worker.js', {
type: 'module',
});
const comlink = Comlink.wrap(worker);
return { comlink, worker };
}
};
const CryptoWorker: any = getDedicatedCryptoWorker()?.comlink;
export async function generateKeyAttributes(
passphrase: string