Skip to content

Commit ec5813a

Browse files
authored
refactor(messaging, web): convert classes to extension types for improved interop (#17820)
* fix(messaging): convert classes to extension types for improved interop * fix(messaging): remove unnecessary JS annotation for Messaging extension type
1 parent 74a37ae commit ec5813a

File tree

1 file changed

+6
-35
lines changed

1 file changed

+6
-35
lines changed

packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,55 +36,31 @@ external JSFunction onMessage(
3636
Observer observer,
3737
);
3838

39-
@JS('Messaging')
40-
@staticInterop
41-
abstract class MessagingJsImpl {}
39+
extension type MessagingJsImpl._(JSObject _) implements JSObject {}
4240

43-
@JS()
44-
@staticInterop
45-
@anonymous
46-
class Observer {
41+
extension type Observer._(JSObject _) implements JSObject {
4742
external factory Observer({JSAny next, JSAny error});
48-
}
49-
50-
extension ObserverJsImplX on Observer {
5143
external JSAny get next;
5244
external JSAny get error;
5345
}
5446

55-
@JS()
56-
@staticInterop
57-
@anonymous
58-
class GetTokenOptions {
47+
extension type GetTokenOptions._(JSObject _) implements JSObject {
5948
// TODO - I imagine we won't be implementing serviceWorkerRegistration type as it extends EventTarget class
6049
// external String get serviceWorkerRegistration
6150
external factory GetTokenOptions({
6251
JSString? vapidKey,
6352
/*dynamic serviceWorkerRegistration */
6453
});
65-
}
66-
67-
extension GetTokenOptionsJsImplX on GetTokenOptions {
6854
external JSString get vapidKey;
6955
}
7056

71-
@JS()
72-
@staticInterop
73-
@anonymous
74-
abstract class NotificationPayloadJsImpl {}
75-
76-
extension NotificationPayloadJsImplX on NotificationPayloadJsImpl {
57+
extension type NotificationPayloadJsImpl._(JSObject _) implements JSObject {
7758
external JSString? get title;
7859
external JSString? get body;
7960
external JSString? get image;
8061
}
8162

82-
@JS()
83-
@staticInterop
84-
@anonymous
85-
abstract class MessagePayloadJsImpl {}
86-
87-
extension MessagePayloadJsImplX on MessagePayloadJsImpl {
63+
extension type MessagePayloadJsImpl._(JSObject _) implements JSObject {
8864
external JSString get messageId;
8965
external JSString? get collapseKey;
9066
external FcmOptionsJsImpl? get fcmOptions;
@@ -93,12 +69,7 @@ extension MessagePayloadJsImplX on MessagePayloadJsImpl {
9369
external JSString? get from;
9470
}
9571

96-
@JS()
97-
@staticInterop
98-
@anonymous
99-
abstract class FcmOptionsJsImpl {}
100-
101-
extension FcmOptionsJsImplX on FcmOptionsJsImpl {
72+
extension type FcmOptionsJsImpl._(JSObject _) implements JSObject {
10273
external JSString? get analyticsLabel;
10374
external JSString? get link;
10475
}

0 commit comments

Comments
 (0)