Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions packages/powersync_core/lib/src/web/sync_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class SyncWorkerHandle implements StreamingSync {
_channel = WorkerCommunicationChannel(
port: sendToWorker,
errors: EventStreamProviders.errorEvent.forTarget(worker),
logger: database.logger,
requestHandler: (type, payload) async {
switch (type) {
case SyncWorkerMessageType.requestEndpoint:
Expand Down Expand Up @@ -84,12 +85,13 @@ class SyncWorkerHandle implements StreamingSync {
Map<String, dynamic>? syncParams}) async {
final worker = SharedWorker(workerUri.toString().toJS);
final handle = SyncWorkerHandle._(
database: database,
connector: connector,
crudThrottleTimeMs: crudThrottleTimeMs,
sendToWorker: worker.port,
worker: worker,
syncParams: syncParams);
database: database,
connector: connector,
crudThrottleTimeMs: crudThrottleTimeMs,
sendToWorker: worker.port,
worker: worker,
syncParams: syncParams,
);

// Make sure that the worker is working, or throw immediately.
await handle._channel.ping();
Expand Down
7 changes: 4 additions & 3 deletions packages/powersync_core/lib/src/web/sync_worker_protocol.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:convert';
import 'dart:js_interop';

import 'package:logging/logging.dart';
import 'package:web/web.dart';

import '../connector.dart';
Expand Down Expand Up @@ -197,8 +198,6 @@ extension type SerializedSyncStatus._(JSObject _) implements JSObject {
}

final class WorkerCommunicationChannel {
static final _logger = autoLogger;

final Map<int, Completer<JSAny?>> _pendingRequests = {};
int _nextRequestId = 0;
bool _hasError = false;
Expand All @@ -210,14 +209,16 @@ final class WorkerCommunicationChannel {
requestHandler;
final StreamController<(SyncWorkerMessageType, JSAny)> _events =
StreamController();
final Logger _logger;

Stream<(SyncWorkerMessageType, JSAny)> get events => _events.stream;

WorkerCommunicationChannel({
required this.port,
required this.requestHandler,
Stream<Event>? errors,
}) {
Logger? logger,
}) : _logger = logger ?? autoLogger {
port.start();
_incomingErrors = errors?.listen((event) {
_hasError = true;
Expand Down
Loading