Skip to content

Commit db2f8d9

Browse files
committed
Recover workers not initializing
1 parent de8c204 commit db2f8d9

File tree

1 file changed

+36
-20
lines changed

1 file changed

+36
-20
lines changed

sqlite3_web/lib/src/client.dart

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -248,36 +248,52 @@ final class DatabaseClient implements WebSqlite {
248248
}
249249
_startedWorkers = true;
250250

251-
if (globalContext.has('Worker')) {
252-
final dedicated = Worker(
251+
await _startDedicated();
252+
await _startShared();
253+
});
254+
}
255+
256+
Future<void> _startDedicated() async {
257+
if (globalContext.has('Worker')) {
258+
final Worker dedicated;
259+
try {
260+
dedicated = Worker(
253261
workerUri.toString().toJS,
254262
WorkerOptions(name: 'sqlite3_worker'),
255263
);
256-
257-
final (endpoint, channel) = await createChannel();
258-
ConnectRequest(endpoint: endpoint, requestId: 0)
259-
.sendToWorker(dedicated);
260-
261-
_connectionToDedicated =
262-
WorkerConnection(channel.injectErrorsFrom(dedicated));
263-
} else {
264+
} on Object {
264265
_missingFeatures.add(MissingBrowserFeature.dedicatedWorkers);
266+
return;
265267
}
266268

267-
if (globalContext.has('SharedWorker')) {
268-
final shared = SharedWorker(workerUri.toString().toJS);
269-
shared.port.start();
269+
final (endpoint, channel) = await createChannel();
270+
ConnectRequest(endpoint: endpoint, requestId: 0).sendToWorker(dedicated);
270271

271-
final (endpoint, channel) = await createChannel();
272-
ConnectRequest(endpoint: endpoint, requestId: 0)
273-
.sendToPort(shared.port);
272+
_connectionToDedicated =
273+
WorkerConnection(channel.injectErrorsFrom(dedicated));
274+
} else {
275+
_missingFeatures.add(MissingBrowserFeature.dedicatedWorkers);
276+
}
277+
}
274278

275-
_connectionToShared =
276-
WorkerConnection(channel.injectErrorsFrom(shared));
277-
} else {
279+
Future<void> _startShared() async {
280+
if (globalContext.has('SharedWorker')) {
281+
final SharedWorker shared;
282+
try {
283+
shared = SharedWorker(workerUri.toString().toJS);
284+
shared.port.start();
285+
} on Object {
278286
_missingFeatures.add(MissingBrowserFeature.sharedWorkers);
287+
return;
279288
}
280-
});
289+
290+
final (endpoint, channel) = await createChannel();
291+
ConnectRequest(endpoint: endpoint, requestId: 0).sendToPort(shared.port);
292+
293+
_connectionToShared = WorkerConnection(channel.injectErrorsFrom(shared));
294+
} else {
295+
_missingFeatures.add(MissingBrowserFeature.sharedWorkers);
296+
}
281297
}
282298

283299
Future<WorkerConnection> _connectToDedicatedInShared() {

0 commit comments

Comments
 (0)