fix firefox worker problem
This commit is contained in:
parent
6f21551956
commit
70b363caa8
@ -34,4 +34,4 @@
|
|||||||
<div id="emoji-display-2"></div>
|
<div id="emoji-display-2"></div>
|
||||||
<button id="okButton" style="display: none">OK</button>
|
<button id="okButton" style="display: none">OK</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
20
src/service-workers/cache.worker.js
Normal file
20
src/service-workers/cache.worker.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
const addResourcesToCache = async (resources) => {
|
||||||
|
const cache = await caches.open("v1");
|
||||||
|
await cache.addAll(resources);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.addEventListener("install", (event) => {
|
||||||
|
event.waitUntil(
|
||||||
|
addResourcesToCache([
|
||||||
|
"/",
|
||||||
|
"/index.html",
|
||||||
|
"/style.css",
|
||||||
|
"/app.js",
|
||||||
|
"/image-list.js",
|
||||||
|
"/star-wars-logo.jpg",
|
||||||
|
"/gallery/bountyHunters.jpg",
|
||||||
|
"/gallery/myLittleVader.jpg",
|
||||||
|
"/gallery/snowTroopers.jpg",
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
});
|
@ -1,5 +1,3 @@
|
|||||||
import Database from '../services/database.service';
|
|
||||||
|
|
||||||
self.addEventListener('install', (event) => {
|
self.addEventListener('install', (event) => {
|
||||||
event.waitUntil(self.skipWaiting()); // Activate worker immediately
|
event.waitUntil(self.skipWaiting()); // Activate worker immediately
|
||||||
});
|
});
|
||||||
@ -11,7 +9,6 @@ self.addEventListener('activate', (event) => {
|
|||||||
// Event listener for messages from clients
|
// Event listener for messages from clients
|
||||||
self.addEventListener('message', async (event) => {
|
self.addEventListener('message', async (event) => {
|
||||||
const data = event.data;
|
const data = event.data;
|
||||||
const db = await Database.getInstance();
|
|
||||||
|
|
||||||
if (data.type === 'ADD_OBJECT') {
|
if (data.type === 'ADD_OBJECT') {
|
||||||
try {
|
try {
|
||||||
@ -19,7 +16,10 @@ self.addEventListener('message', async (event) => {
|
|||||||
const db = await openDatabase();
|
const db = await openDatabase();
|
||||||
const tx = db.transaction(storeName, 'readwrite');
|
const tx = db.transaction(storeName, 'readwrite');
|
||||||
const store = tx.objectStore(storeName);
|
const store = tx.objectStore(storeName);
|
||||||
await store.put(object);
|
await store.put({
|
||||||
|
...object,
|
||||||
|
modified: Date.now()
|
||||||
|
});
|
||||||
event.ports[0].postMessage({ status: 'success', message: 'Object added or replaced successfully' });
|
event.ports[0].postMessage({ status: 'success', message: 'Object added or replaced successfully' });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
event.ports[0].postMessage({ status: 'error', message: error.message });
|
event.ports[0].postMessage({ status: 'error', message: error.message });
|
||||||
|
@ -139,7 +139,7 @@ class Database {
|
|||||||
console.log('Received response from service worker (GET_OBJECT):', event.data);
|
console.log('Received response from service worker (GET_OBJECT):', event.data);
|
||||||
};
|
};
|
||||||
|
|
||||||
public addObject(payload: { storeName: string; object: any; key: any }) {
|
public async addObject(payload: { storeName: string; object: any; key: any }) {
|
||||||
if (this.serviceWorkerRegistration?.active) {
|
if (this.serviceWorkerRegistration?.active) {
|
||||||
const messageChannel = this.createMessageChannel(this.handleAddObjectResponse);
|
const messageChannel = this.createMessageChannel(this.handleAddObjectResponse);
|
||||||
this.serviceWorkerRegistration.active.postMessage(
|
this.serviceWorkerRegistration.active.postMessage(
|
||||||
@ -149,10 +149,19 @@ class Database {
|
|||||||
},
|
},
|
||||||
[messageChannel.port2],
|
[messageChannel.port2],
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
const { storeName, object } = payload;
|
||||||
|
const db = await openDatabase();
|
||||||
|
const tx = db.transaction(storeName, 'readwrite');
|
||||||
|
const store = tx.objectStore(storeName);
|
||||||
|
await store.put({
|
||||||
|
...object,
|
||||||
|
modified: Date.now()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public getObject(storeName: string, key: string) {
|
public async getObject(storeName: string, key: string) {
|
||||||
if (this.serviceWorkerRegistration?.active) {
|
if (this.serviceWorkerRegistration?.active) {
|
||||||
const messageChannel = this.createMessageChannel(this.handleGetObjectResponse);
|
const messageChannel = this.createMessageChannel(this.handleGetObjectResponse);
|
||||||
|
|
||||||
@ -163,6 +172,16 @@ class Database {
|
|||||||
},
|
},
|
||||||
[messageChannel.port2],
|
[messageChannel.port2],
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
const db = await openDatabase();
|
||||||
|
const tx = db.transaction(storeName, 'readonly');
|
||||||
|
const store = tx.objectStore(storeName);
|
||||||
|
const result = await new Promise((resolve, reject) => {
|
||||||
|
const getRequest = store.get(key);
|
||||||
|
getRequest.onsuccess = () => resolve(getRequest.result);
|
||||||
|
getRequest.onerror = () => reject(getRequest.error);
|
||||||
|
});
|
||||||
|
console.log("🚀 ~ Database ~ result ~ result:", result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user