🔧 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
|
// Web Worker for search operations
|
||||||
let searchWorker = null;
|
let searchWorker = null;
|
||||||
let searchWorkerRequestId = 0;
|
let searchWorkerRequestId = 0;
|
||||||
|
let searchWorkerInitPromise = null;
|
||||||
|
|
||||||
const initSearchWorker = () => {
|
const initSearchWorker = () => {
|
||||||
if (!searchWorker) {
|
if (!searchWorkerInitPromise) {
|
||||||
try {
|
searchWorkerInitPromise = import('../workers/search.worker.js?worker')
|
||||||
// Use Vite's ?worker syntax for proper bundling
|
|
||||||
import('../workers/search.worker.js?worker')
|
|
||||||
.then(module => {
|
.then(module => {
|
||||||
searchWorker = new module.default();
|
searchWorker = new module.default();
|
||||||
console.log('✅ Worker created successfully');
|
console.log('✅ Worker created successfully');
|
||||||
@@ -416,20 +416,16 @@ const initSearchWorker = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
console.log('✅ Worker event handlers attached');
|
console.log('✅ Worker event handlers attached');
|
||||||
|
return searchWorker;
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
console.error('❌ Failed to import worker:', error);
|
console.error('❌ Failed to import worker:', error);
|
||||||
operationProgress.value.active = false;
|
|
||||||
operationProgress.value.message = 'Failed to initialize search';
|
|
||||||
searchWorker = null;
|
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 => {
|
const handleSearchWorkerMessage = event => {
|
||||||
|
|||||||
Reference in New Issue
Block a user