@@ -5,33 +5,45 @@ import 'package:sqlite3_web/sqlite3_web.dart';
5
5
import 'package:sqlite_async/sqlite_async.dart' ;
6
6
import 'package:sqlite_async/src/web/database/broadcast_updates.dart' ;
7
7
import 'package:sqlite_async/src/web/web_mutex.dart' ;
8
+ import 'package:sqlite_async/web.dart' ;
8
9
9
10
import 'database.dart' ;
11
+ import 'worker/worker_utils.dart' ;
10
12
11
13
Map <String , FutureOr <WebSqlite >> webSQLiteImplementations = {};
12
14
13
15
/// Web implementation of [AbstractDefaultSqliteOpenFactory]
14
16
class DefaultSqliteOpenFactory
15
- extends AbstractDefaultSqliteOpenFactory <CommonDatabase > {
16
- final Future <WebSqlite > _initialized;
17
+ extends AbstractDefaultSqliteOpenFactory <CommonDatabase >
18
+ implements WebSqliteOpenFactory {
19
+ late final Future <WebSqlite > _initialized = Future .sync (() {
20
+ final cacheKey = sqliteOptions.webSqliteOptions.wasmUri +
21
+ sqliteOptions.webSqliteOptions.workerUri;
22
+
23
+ if (webSQLiteImplementations.containsKey (cacheKey)) {
24
+ return webSQLiteImplementations[cacheKey]! ;
25
+ }
26
+
27
+ webSQLiteImplementations[cacheKey] =
28
+ openWebSqlite (sqliteOptions.webSqliteOptions);
29
+ return webSQLiteImplementations[cacheKey]! ;
30
+ });
17
31
18
32
DefaultSqliteOpenFactory (
19
33
{required super .path,
20
- super .sqliteOptions = const SqliteOptions .defaults ()})
21
- : _initialized = Future .sync (() {
22
- final cacheKey = sqliteOptions.webSqliteOptions.wasmUri +
23
- sqliteOptions.webSqliteOptions.workerUri;
24
-
25
- if (webSQLiteImplementations.containsKey (cacheKey)) {
26
- return webSQLiteImplementations[cacheKey]! ;
27
- }
28
-
29
- webSQLiteImplementations[cacheKey] = WebSqlite .open (
30
- wasmModule: Uri .parse (sqliteOptions.webSqliteOptions.wasmUri),
31
- worker: Uri .parse (sqliteOptions.webSqliteOptions.workerUri),
32
- );
33
- return webSQLiteImplementations[cacheKey]! ;
34
- });
34
+ super .sqliteOptions = const SqliteOptions .defaults ()}) {
35
+ // Make sure initializer starts running immediately
36
+ _initialized;
37
+ }
38
+
39
+ @override
40
+ Future <WebSqlite > openWebSqlite (WebSqliteOptions options) async {
41
+ return WebSqlite .open (
42
+ wasmModule: Uri .parse (sqliteOptions.webSqliteOptions.wasmUri),
43
+ worker: Uri .parse (sqliteOptions.webSqliteOptions.workerUri),
44
+ controller: AsyncSqliteController (),
45
+ );
46
+ }
35
47
36
48
@override
37
49
0 commit comments