Skip to content

Commit da368be

Browse files
authored
Create worker.js
1 parent 434870c commit da368be

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

libreblog/worker.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const startSqlite3 = async function(messageId, callback) {
2+
const {default: sqlite3InitModule} = await import ("../dependencies/sqlite3/sqlite3.mjs");
3+
try {
4+
self.sqlite3InitModule({
5+
print: self.console.log,
6+
printErr: self.console.error
7+
}).then((sqlite3) => callback(sqlite3));
8+
} catch (e) {
9+
self.postMessage({messageId: messageId, type: "error", result: e});
10+
}
11+
}
12+
13+
const checkOpfs = function(sqlite3) {
14+
if (sqlite3.oo1.OpfsDb) {
15+
self.workerSqlite3 = sqlite3;
16+
self.postMessage({messageId: 'start-sqlite3', type: 'ok'});
17+
} else {
18+
self.postMessage({messageId: 'start-sqlite3', type: "error", result: "No Opfs"});
19+
}
20+
}
21+
22+
const restoreDb = function(sqlite3, arrayBuffer) {
23+
try {
24+
sqlite3.oo1.OpfsDb.importDb('main.db', arrayBuffer);
25+
self.postMessage({messageId: 'restore-db', type: "ok"});
26+
} catch (e) {
27+
self.postMessage({messageId: messageId, type: "error", result: e});
28+
}
29+
}
30+
31+
onmessage = function (msgEvent) {
32+
const msg = msgEvent.data;
33+
34+
if (msg.messageId === 'restore-db') {
35+
startSqlite3(msg.messageId, (sqlite3) => restoreDb(sqlite3, msg.args.arrayBuffer));
36+
} else if (msg.messageId === 'start-sqlite3') {
37+
startSqlite3(msg.messageId, checkOpfs);
38+
} else if (msg.messageId === 'init-worker-api') {
39+
self.workerSqlite3.initWorker1API();
40+
}
41+
};

0 commit comments

Comments
 (0)