Skip to content

Commit 74b9a05

Browse files
authored
feat(app_installation, web): migrate web to js_interop to be compatible with WASM (#12220)
* feat(app_installation, web): migrate web to js_interop to be compatible with WASM * fix typing * update web version
1 parent e7679ee commit 74b9a05

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

packages/firebase_app_installations/firebase_app_installations_web/lib/src/interop/installations.dart

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
// found in the LICENSE file.
44

55
import 'dart:async';
6+
import 'dart:js_interop';
67

78
import 'package:firebase_core_web/firebase_core_web_interop.dart';
8-
import 'package:js/js.dart';
99

1010
import 'installations_interop.dart' as installations_interop;
1111

@@ -32,23 +32,26 @@ class Installations
3232
: super.fromJsObject(jsObject);
3333

3434
Future<void> delete() =>
35-
handleThenable(installations_interop.deleteInstallations(jsObject));
35+
(installations_interop.deleteInstallations(jsObject)).toDart;
3636

37-
Future<String> getId() =>
38-
handleThenable(installations_interop.getId(jsObject));
37+
Future<String> getId() => (installations_interop.getId(jsObject))
38+
.toDart
39+
.then((value) => value! as String);
3940

4041
Future<String> getToken([bool forceRefresh = false]) =>
41-
handleThenable(installations_interop.getToken(jsObject, forceRefresh));
42+
(installations_interop.getToken(jsObject, forceRefresh.toJS))
43+
.toDart
44+
.then((value) => value! as String);
4245

43-
Func0? _onIdChangedUnsubscribe;
46+
JSFunction? _onIdChangedUnsubscribe;
4447

4548
StreamController<String>? _idChangeController;
4649

4750
Stream<String> get onIdChange {
4851
if (_idChangeController == null) {
49-
final wrapper = allowInterop((String id) {
52+
final wrapper = ((String id) {
5053
_idChangeController!.add(id);
51-
});
54+
}).toJS;
5255

5356
void startListen() {
5457
assert(_onIdChangedUnsubscribe == null);
@@ -57,7 +60,7 @@ class Installations
5760
}
5861

5962
void stopListen() {
60-
_onIdChangedUnsubscribe!();
63+
_onIdChangedUnsubscribe?.callAsFunction();
6164
_onIdChangedUnsubscribe = null;
6265
}
6366

packages/firebase_app_installations/firebase_app_installations_web/lib/src/interop/installations_interop.dart

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,37 @@
55
@JS('firebase_installations')
66
library firebase_interop.installations;
77

8+
import 'dart:js_interop';
9+
810
import 'package:firebase_core_web/firebase_core_web_interop.dart';
9-
import 'package:js/js.dart';
1011

1112
@JS()
13+
@staticInterop
1214
external InstallationsJsImpl getInstallations([AppJsImpl? app]);
1315

1416
@JS()
15-
external PromiseJsImpl<String> getId(InstallationsJsImpl installations);
17+
@staticInterop
18+
external JSPromise /* String */ getId(InstallationsJsImpl installations);
1619

1720
@JS()
18-
external PromiseJsImpl<String> getToken(InstallationsJsImpl installations,
19-
[bool? forceRefresh]);
21+
@staticInterop
22+
external JSPromise /* String */ getToken(InstallationsJsImpl installations,
23+
[JSBoolean? forceRefresh]);
2024

2125
@JS()
22-
external PromiseJsImpl<void> deleteInstallations(
26+
@staticInterop
27+
external JSPromise /* void */ deleteInstallations(
2328
InstallationsJsImpl installations);
2429

2530
@JS()
26-
external Func0 onIdChange(
27-
InstallationsJsImpl installations, Func1<String, void> forceRefresh);
31+
@staticInterop
32+
external JSFunction onIdChange(
33+
InstallationsJsImpl installations, JSFunction forceRefresh);
2834

2935
@JS('Installations')
30-
abstract class InstallationsJsImpl {
36+
@staticInterop
37+
abstract class InstallationsJsImpl {}
38+
39+
extension InstallationsJsImplExtension on InstallationsJsImpl {
3140
external AppJsImpl get app;
3241
}

packages/firebase_app_installations/firebase_app_installations_web/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ homepage: https://github.com/firebase/flutterfire/tree/master/packages/firebase_
55
repository: https://github.com/firebase/flutterfire/tree/master/packages/firebase_app_installations/firebase_app_installations_web
66

77
environment:
8-
sdk: '>=2.18.0 <4.0.0'
8+
sdk: '>=3.2.0 <4.0.0'
99
flutter: '>=3.3.0'
1010

1111
dependencies:
@@ -18,7 +18,7 @@ dependencies:
1818
flutter_web_plugins:
1919
sdk: flutter
2020
js: ^0.6.3
21-
21+
web: ^0.5.1
2222
dev_dependencies:
2323
firebase_core_platform_interface: ^5.0.0
2424
flutter_test:

0 commit comments

Comments
 (0)