Skip to content

Commit 1f87766

Browse files
cleanup
1 parent ff93d0d commit 1f87766

File tree

5 files changed

+19
-25
lines changed

5 files changed

+19
-25
lines changed

demos/react-supabase-todolist/src/components/providers/SystemProvider.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ export const db = new PowerSyncDatabase({
1717
// dbFilename: 's.sqlite'
1818
// }
1919
database: new WASQLiteOpenFactory({
20-
dbFilename: 'examplswse.db',
21-
vfs: WASQLiteVFS.OPFSCoopSyncVFS
22-
// vfs: WASQLiteVFS.OPFSCoopSyncVFS //Out of memory errors on iOS Safari
20+
dbFilename: 'examplsw1se11.db',
21+
// vfs: WASQLiteVFS.OPFSCoopSyncVFS
22+
vfs: WASQLiteVFS.OPFSCoopSyncVFS //Out of memory errors on iOS Safari
2323
})
2424
});
2525

packages/web/src/db/adapters/LockedAsyncDatabaseAdapter.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export class LockedAsyncDatabaseAdapter extends BaseObserver<LockedAsyncDatabase
3737
private debugMode: boolean;
3838
private _dbIdentifier: string;
3939
private _isInitialized = false;
40+
protected initPromise: Promise<void>;
4041
private _db: AsyncDatabaseConnection | null = null;
4142
protected _disposeTableChangeListener: (() => void) | null = null;
4243

@@ -64,6 +65,7 @@ export class LockedAsyncDatabaseAdapter extends BaseObserver<LockedAsyncDatabase
6465
this.dbGetHelpers = this.generateDBHelpers({
6566
execute: (query, params) => this.acquireLock(() => this._execute(query, params))
6667
});
68+
this.initPromise = this._init();
6769
}
6870

6971
protected get baseDB() {
@@ -87,7 +89,14 @@ export class LockedAsyncDatabaseAdapter extends BaseObserver<LockedAsyncDatabase
8789
});
8890
}
8991

92+
/**
93+
* Init is automatic, this helps catch errors or explicitly await initialization
94+
*/
9095
async init() {
96+
return this.initPromise;
97+
}
98+
99+
protected async _init() {
91100
this._db = await this.options.openConnection();
92101
await this._db.init();
93102
await this.registerOnChangeListener(this._db);
@@ -97,17 +106,8 @@ export class LockedAsyncDatabaseAdapter extends BaseObserver<LockedAsyncDatabase
97106
}
98107

99108
protected async waitForInitialized() {
100-
if (this._isInitialized) {
101-
return;
102-
}
103-
return new Promise<void>((resolve) => {
104-
const l = this.registerListener({
105-
initialized: () => {
106-
resolve();
107-
l();
108-
}
109-
});
110-
});
109+
// Awaiting this will expose errors on function calls like .execute etc
110+
await this.initPromise;
111111
}
112112

113113
/**

packages/web/src/db/adapters/wa-sqlite/WASQLiteConnection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export class WASqliteConnection extends BaseObserver<WASQLiteConnectionListener>
123123
this.updatedTables = new Set();
124124
this.updateTimer = null;
125125
this.broadcastChannel = null;
126-
this.connectionId = new Date().valueOf() + Math.random() * 1000;
126+
this.connectionId = new Date().valueOf() + Math.random();
127127
this.statementMutex = new Mutex();
128128
this._moduleFactory = DEFAULT_MODULE_FACTORIES[this.options.vfs ?? WASQLiteVFS.IDBBatchAtomicVFS];
129129
}

packages/web/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class WASQLiteOpenFactory extends AbstractWebSQLOpenFactory {
4848

4949
const workerDBOpener = Comlink.wrap<OpenAsyncDatabaseConnection<WASQLiteOpenOptions>>(messagePort);
5050

51-
const workerAdapter = new WorkerLockedAsyncDatabaseAdapter({
51+
adapter = new WorkerLockedAsyncDatabaseAdapter({
5252
messagePort,
5353
openConnection: () =>
5454
workerDBOpener({
@@ -60,11 +60,9 @@ export class WASQLiteOpenFactory extends AbstractWebSQLOpenFactory {
6060
debugMode: this.options.debugMode,
6161
logger: this.logger
6262
});
63-
workerAdapter.init();
64-
adapter = workerAdapter;
6563
} else {
6664
// Don't use a web worker
67-
const contextAdapter = new LockedAsyncDatabaseAdapter({
65+
adapter = new LockedAsyncDatabaseAdapter({
6866
openConnection: async () =>
6967
new WASqliteConnection({
7068
dbFilename: this.options.dbFilename,
@@ -77,8 +75,6 @@ export class WASQLiteOpenFactory extends AbstractWebSQLOpenFactory {
7775
debugMode: this.options.debugMode,
7876
logger: this.logger
7977
});
80-
contextAdapter.init();
81-
adapter = contextAdapter;
8278
}
8379

8480
return adapter;

packages/web/src/db/sync/SharedWebStreamingSyncImplementation.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,8 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
2727
}
2828

2929
async getDBWorkerPort(): Promise<MessagePort> {
30-
// FIXME type error
31-
const port = (await this.dbWorkerPort) as MessagePort;
32-
33-
// TODO this can only be done once. Throw an error if multiple attempts are made
30+
// This is provided asynchronously for an easier initialization
31+
const port = await this.dbWorkerPort;
3432
return Comlink.transfer(port, [port]);
3533
}
3634

0 commit comments

Comments
 (0)