You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/webworker/workers/browser/util_worker_interface.ts

41 lines
1.0 KiB
TypeScript

import { join } from 'path';
import { getAppRootPath } from '../../../node/getRootPath';
import { WorkerInterface } from '../../worker_interface';
let utilWorkerInterface: WorkerInterface | undefined;
type WorkerAllowedFunctionName =
| 'arrayBufferToStringBase64'
| 'decryptAttachmentBufferNode'
| 'encryptAttachmentBufferNode'
| 'DecryptAESGCM'
| 'fromBase64ToArrayBuffer'
| 'verifyAllSignatures'
| 'encryptForPubkey';
const internalCallUtilsWorker = async (
fnName: WorkerAllowedFunctionName,
...args: any
): Promise<any> => {
if (!utilWorkerInterface) {
const utilWorkerPath = join(
getAppRootPath(),
'ts',
'webworker',
'workers',
'node',
'util',
'util.worker.compiled.js'
);
utilWorkerInterface = new WorkerInterface(utilWorkerPath, 3 * 60 * 1000);
}
return utilWorkerInterface?.callWorker(fnName, ...args);
};
export const callUtilsWorker = async (
fnName: WorkerAllowedFunctionName,
...args: any
): Promise<any> => {
return internalCallUtilsWorker(fnName, ...args);
};