mirror of
				https://git.unlock-music.dev/um/web.git
				synced 2025-11-04 14:13:29 +08:00 
			
		
		
		
	feat(storage): Pass over config to worker thread on decryption call
(cherry picked from commit 36d616398eac4e8d51863863fa5205fe1c91267f)
This commit is contained in:
		
							parent
							
								
									d8b362efbe
								
							
						
					
					
						commit
						eaf457e6a0
					
				@ -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);
 | 
				
			||||||
 | 
				
			|||||||
@ -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) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user