1
0
forked from um/web

feat(storage): Pass over config to worker thread on decryption call

(cherry picked from commit 36d616398eac4e8d51863863fa5205fe1c91267f)
This commit is contained in:
鲁树人 2021-12-20 22:22:35 +00:00
parent d8b362efbe
commit eaf457e6a0
2 changed files with 10 additions and 2 deletions

View File

@ -39,6 +39,7 @@
import { spawn, Worker, Pool } from 'threads'; import { spawn, Worker, Pool } from 'threads';
import { CommonDecrypt } from '@/decrypt/common.ts'; import { CommonDecrypt } from '@/decrypt/common.ts';
import { DecryptQueue } from '@/utils/utils'; import { DecryptQueue } from '@/utils/utils';
import { storage } from '@/utils/storage';
export default { export default {
name: 'FileSelector', name: 'FileSelector',
@ -76,7 +77,7 @@ export default {
this.queue.queue(async (dec = CommonDecrypt) => { this.queue.queue(async (dec = CommonDecrypt) => {
console.log('start handling', file.name); console.log('start handling', file.name);
try { try {
this.$emit('success', await dec(file)); this.$emit('success', await dec(file, await storage.getAll()));
} catch (e) { } catch (e) {
console.error(e); console.error(e);
this.$emit('error', e, file.name); this.$emit('error', e, file.name);

View File

@ -10,8 +10,15 @@ import { Decrypt as TmDecrypt } from '@/decrypt/tm';
import { Decrypt as JooxDecrypt } from '@/decrypt/joox'; import { Decrypt as JooxDecrypt } from '@/decrypt/joox';
import { DecryptResult, FileInfo } from '@/decrypt/entity'; import { DecryptResult, FileInfo } from '@/decrypt/entity';
import { SplitFilename } from '@/decrypt/utils'; import { SplitFilename } from '@/decrypt/utils';
import { storage } from '@/utils/storage';
import InMemoryStorage from '@/utils/storage/InMemoryStorage';
export async function CommonDecrypt(file: FileInfo, config: Record<string, any>): Promise<DecryptResult> {
// Worker thread will fallback to in-memory storage.
if (storage instanceof InMemoryStorage) {
await storage.setAll(config);
}
export async function CommonDecrypt(file: FileInfo): Promise<DecryptResult> {
const raw = SplitFilename(file.name); const raw = SplitFilename(file.name);
let rt_data: DecryptResult; let rt_data: DecryptResult;
switch (raw.ext) { switch (raw.ext) {