From ca8eb234133876974ab95663ae3b683295d39bb3 Mon Sep 17 00:00:00 2001 From: Jude Kwashie Date: Tue, 28 Oct 2025 12:51:54 +0000 Subject: [PATCH 1/2] fix(messaging): convert classes to extension types for improved interop --- .../lib/src/interop/messaging_interop.dart | 40 +++---------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart b/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart index 99dfc1103834..2faf50807303 100644 --- a/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart +++ b/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart @@ -37,54 +37,31 @@ external JSFunction onMessage( ); @JS('Messaging') -@staticInterop -abstract class MessagingJsImpl {} +extension type MessagingJsImpl._(JSObject _) implements JSObject {} -@JS() -@staticInterop -@anonymous -class Observer { +extension type Observer._(JSObject _) implements JSObject { external factory Observer({JSAny next, JSAny error}); -} - -extension ObserverJsImplX on Observer { external JSAny get next; external JSAny get error; } -@JS() -@staticInterop -@anonymous -class GetTokenOptions { +extension type GetTokenOptions._(JSObject _) implements JSObject { // TODO - I imagine we won't be implementing serviceWorkerRegistration type as it extends EventTarget class // external String get serviceWorkerRegistration external factory GetTokenOptions({ JSString? vapidKey, /*dynamic serviceWorkerRegistration */ }); -} - -extension GetTokenOptionsJsImplX on GetTokenOptions { external JSString get vapidKey; } -@JS() -@staticInterop -@anonymous -abstract class NotificationPayloadJsImpl {} - -extension NotificationPayloadJsImplX on NotificationPayloadJsImpl { +extension type NotificationPayloadJsImpl._(JSObject _) implements JSObject { external JSString? get title; external JSString? get body; external JSString? get image; } -@JS() -@staticInterop -@anonymous -abstract class MessagePayloadJsImpl {} - -extension MessagePayloadJsImplX on MessagePayloadJsImpl { +extension type MessagePayloadJsImpl._(JSObject _) implements JSObject { external JSString get messageId; external JSString? get collapseKey; external FcmOptionsJsImpl? get fcmOptions; @@ -93,12 +70,7 @@ extension MessagePayloadJsImplX on MessagePayloadJsImpl { external JSString? get from; } -@JS() -@staticInterop -@anonymous -abstract class FcmOptionsJsImpl {} - -extension FcmOptionsJsImplX on FcmOptionsJsImpl { +extension type FcmOptionsJsImpl._(JSObject _) implements JSObject { external JSString? get analyticsLabel; external JSString? get link; } From 95c0bb6be657c2e158568f246d7b92dd82a2f553 Mon Sep 17 00:00:00 2001 From: Jude Kwashie Date: Tue, 28 Oct 2025 14:46:08 +0000 Subject: [PATCH 2/2] fix(messaging): remove unnecessary JS annotation for Messaging extension type --- .../lib/src/interop/messaging_interop.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart b/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart index 2faf50807303..66e1fe87e49e 100644 --- a/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart +++ b/packages/firebase_messaging/firebase_messaging_web/lib/src/interop/messaging_interop.dart @@ -36,7 +36,6 @@ external JSFunction onMessage( Observer observer, ); -@JS('Messaging') extension type MessagingJsImpl._(JSObject _) implements JSObject {} extension type Observer._(JSObject _) implements JSObject {