Files

35 lines
1.3 KiB
JavaScript

import { STATE_STORE, executeDBStoreRequest } from './db_shared.js';
import { isStateSaverMessage } from './contracts.js';
console.log('[StateWorker] Worker script loaded and running.');
function log(...args) {
console.log('[StateWorker]', ...args);
}
function error(...args) {
console.error('[StateWorker]', ...args);
}
const dbLogger = { info: log, error };
async function setCanvasState(id, state) {
await executeDBStoreRequest(dbLogger, [STATE_STORE], STATE_STORE, 'readwrite', 'put', { id, state }, "Error setting canvas state", {
openingMessage: null,
upgradingMessage: 'Upgrading IndexedDB in worker...',
successMessage: 'IndexedDB opened successfully in worker.',
logStoreCreation: false,
});
}
self.onmessage = async function (e) {
log('Message received from main thread:', e.data ? 'data received' : 'no data');
if (!isStateSaverMessage(e.data)) {
error('Invalid data received from main thread');
return;
}
const { state, stateKey } = e.data;
try {
log(`Saving state for key: ${stateKey}`);
await setCanvasState(stateKey, state);
log(`State saved successfully for key: ${stateKey}`);
}
catch (err) {
error(`Failed to save state for key: ${stateKey}`, err);
}
};