Merge branch 'master' into release
This commit is contained in:
commit
2a8cd82522
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue