Page MenuHomePhorge

D6991.1765060569.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D6991.1765060569.diff

diff --git a/web/database/worker/db-worker.js b/web/database/worker/db-worker.js
--- a/web/database/worker/db-worker.js
+++ b/web/database/worker/db-worker.js
@@ -2,7 +2,13 @@
import localforage from 'localforage';
-import { type SharedWorkerMessageEvent } from '../../types/worker-types.js';
+import {
+ type SharedWorkerMessageEvent,
+ type WorkerRequestMessage,
+ type WorkerResponseMessage,
+ workerRequestMessageTypes,
+ workerResponseMessageTypes,
+} from '../../types/worker-types.js';
const localforageConfig: PartialConfig = {
driver: localforage.INDEXEDDB,
@@ -13,6 +19,19 @@
};
localforage.config(localforageConfig);
+function processAppRequest(
+ message: WorkerRequestMessage,
+): ?WorkerResponseMessage {
+ if (message.type === workerRequestMessageTypes.PING) {
+ return {
+ type: workerResponseMessageTypes.PONG,
+ text: 'PONG',
+ };
+ }
+
+ throw new Error('Request type not supported');
+}
+
function connectHandler(event: SharedWorkerMessageEvent) {
if (!event.ports.length) {
return;
@@ -21,9 +40,16 @@
console.log('Web database worker alive!');
port.onmessage = async function (messageEvent: MessageEvent) {
- console.log('message from main thread: ', messageEvent.data);
+ const message: WorkerRequestMessage = (messageEvent.data: any);
- port.postMessage({ message: 'response from worker' });
+ try {
+ const result = processAppRequest(message);
+ port.postMessage(result);
+ } catch (e) {
+ port.postMessage({
+ error: e,
+ });
+ }
};
}
diff --git a/web/types/worker-types.js b/web/types/worker-types.js
--- a/web/types/worker-types.js
+++ b/web/types/worker-types.js
@@ -1,5 +1,35 @@
// @flow
+// The types of messages sent from app to worker
+export const workerRequestMessageTypes = Object.freeze({
+ PING: 0,
+});
+
+export type PingWorkerRequestMessage = {
+ +type: 0,
+ +text: string,
+};
+
+export type WorkerRequestMessage = PingWorkerRequestMessage;
+
+// The types of messages sent from worker to app
+export const workerResponseMessageTypes = Object.freeze({
+ PONG: 0,
+});
+
+export type ErrorWorkerResponseMessage = {
+ +error: Error,
+};
+export type PongWorkerResponseMessage = {
+ +type: 0,
+ +text: string,
+};
+
+export type WorkerResponseMessage =
+ | PongWorkerResponseMessage
+ | ErrorWorkerResponseMessage;
+
+// SharedWorker types
export type SharedWorkerMessageEvent = MessageEvent & {
+ports: $ReadOnlyArray<MessagePort>,
...

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 6, 10:36 PM (8 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5841130
Default Alt Text
D6991.1765060569.diff (2 KB)

Event Timeline