🔧 Refactor search worker initialization to use a promise for improved error handling and retry capability
This commit is contained in:
@@ -399,11 +399,11 @@ const client = new GamemasterClient();
|
||||
// Web Worker for search operations
|
||||
let searchWorker = null;
|
||||
let searchWorkerRequestId = 0;
|
||||
let searchWorkerInitPromise = null;
|
||||
|
||||
const initSearchWorker = () => {
|
||||
if (!searchWorker) {
|
||||
try {
|
||||
// Use Vite's ?worker syntax for proper bundling
|
||||
import('../workers/search.worker.js?worker')
|
||||
if (!searchWorkerInitPromise) {
|
||||
searchWorkerInitPromise = import('../workers/search.worker.js?worker')
|
||||
.then(module => {
|
||||
searchWorker = new module.default();
|
||||
console.log('✅ Worker created successfully');
|
||||
@@ -416,20 +416,16 @@ const initSearchWorker = () => {
|
||||
};
|
||||
|
||||
console.log('✅ Worker event handlers attached');
|
||||
return searchWorker;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('❌ Failed to import worker:', error);
|
||||
operationProgress.value.active = false;
|
||||
operationProgress.value.message = 'Failed to initialize search';
|
||||
searchWorker = null;
|
||||
searchWorkerInitPromise = null; // Reset so we can retry
|
||||
throw error;
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('❌ Failed to create worker:', error);
|
||||
operationProgress.value.active = false;
|
||||
operationProgress.value.message = 'Failed to initialize search';
|
||||
searchWorker = null;
|
||||
}
|
||||
}
|
||||
return searchWorkerInitPromise;
|
||||
};
|
||||
|
||||
const handleSearchWorkerMessage = event => {
|
||||
|
||||
Reference in New Issue
Block a user