From 589f144b40120e248b8d5e586901f7d4852e7939 Mon Sep 17 00:00:00 2001 From: MichaelVerdon Date: Wed, 22 Oct 2025 11:11:10 +0100 Subject: [PATCH 1/5] fix(remote-config): js interop types --- .../lib/src/interop/firebase_remote_config.dart | 6 +++--- .../lib/src/interop/firebase_remote_config_interop.dart | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart index 045409fd398a..51e9e6f2ae3b 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart @@ -108,7 +108,7 @@ class RemoteConfig /// Returns all config values. Map getAll() { // Return type is Map - final map = remote_config_interop.getAll(jsObject).dartify()! + final map = remote_config_interop.getAll(jsObject) as Map; // Cast the map to to mirror expected return type: Record; final castMap = map.cast(); @@ -120,10 +120,10 @@ class RemoteConfig RemoteConfigValue getValue(String key) => RemoteConfigValue( utf8.encode( - remote_config_interop.getValue(jsObject, key.toJS).asString().toDart, + remote_config_interop.getValue(jsObject, key.toJS).asString(), ), getSource( - remote_config_interop.getValue(jsObject, key.toJS).getSource().toDart, + remote_config_interop.getValue(jsObject, key.toJS).asString(), ), ); diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart index 445913d55442..d304c68119dc 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart @@ -10,6 +10,7 @@ library; import 'dart:js_interop'; import 'package:firebase_core_web/firebase_core_web_interop.dart'; +import 'package:firebase_remote_config_platform_interface/firebase_remote_config_platform_interface.dart'; @JS() @staticInterop @@ -33,7 +34,7 @@ external JSPromise fetchConfig(RemoteConfigJsImpl remoteConfig); @JS() @staticInterop -external JSAny getAll(RemoteConfigJsImpl remoteConfig); +external Map getAll(RemoteConfigJsImpl remoteConfig); @JS() @staticInterop @@ -49,7 +50,7 @@ external JSString getString(RemoteConfigJsImpl remoteConfig, JSString key); @JS() @staticInterop -external ValueJsImpl getValue(RemoteConfigJsImpl remoteConfig, JSString key); +external RemoteConfigValue getValue(RemoteConfigJsImpl remoteConfig, JSString key); @JS() @staticInterop From 95f75ea2798b20077c4cad070a85907240689fcb Mon Sep 17 00:00:00 2001 From: MichaelVerdon Date: Mon, 27 Oct 2025 11:55:46 +0000 Subject: [PATCH 2/5] fix: more js interop types --- .../src/interop/firebase_remote_config.dart | 3 +- .../firebase_remote_config_interop.dart | 31 ++++--------------- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart index 51e9e6f2ae3b..815df397b1fa 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart @@ -108,8 +108,7 @@ class RemoteConfig /// Returns all config values. Map getAll() { // Return type is Map - final map = remote_config_interop.getAll(jsObject) - as Map; + final map = remote_config_interop.getAll(jsObject).dartify()! as Map; // Cast the map to to mirror expected return type: Record; final castMap = map.cast(); final entries = castMap.keys.map>( diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart index d304c68119dc..ad7d65a570a5 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart @@ -34,7 +34,7 @@ external JSPromise fetchConfig(RemoteConfigJsImpl remoteConfig); @JS() @staticInterop -external Map getAll(RemoteConfigJsImpl remoteConfig); +external JSObject getAll(RemoteConfigJsImpl remoteConfig); @JS() @staticInterop @@ -67,11 +67,7 @@ external JSPromise setCustomSignals( @staticInterop external void setLogLevel(RemoteConfigJsImpl remoteConfig, JSString logLevel); -@JS('RemoteConfig') -@staticInterop -abstract class RemoteConfigJsImpl {} - -extension RemoteConfigJsImplExtension on RemoteConfigJsImpl { +extension type RemoteConfigJsImpl._(JSObject _) implements JSObject { external AppJsImpl get app; external SettingsJsImpl get settings; external set settings(SettingsJsImpl value); @@ -81,24 +77,14 @@ extension RemoteConfigJsImplExtension on RemoteConfigJsImpl { external JSString get lastFetchStatus; } -@JS() -@staticInterop -@anonymous -abstract class ValueJsImpl {} - -extension ValueJsImplExtension on ValueJsImpl { +extension type ValueJsImpl._(JSObject _) implements JSObject { external JSBoolean asBoolean(); external JSNumber asNumber(); external JSString asString(); external JSString getSource(); } -@JS() -@staticInterop -@anonymous -abstract class SettingsJsImpl {} - -extension SettingsJsImplExtension on SettingsJsImpl { +extension type SettingsJsImpl._(JSObject _) implements JSObject { external JSNumber get minimumFetchIntervalMillis; external set minimumFetchIntervalMillis(JSNumber value); external JSNumber get fetchTimeoutMillis; @@ -116,18 +102,13 @@ abstract class ConfigUpdateObserver { }); } -extension ConfigUpdateObserverJsImpl on ConfigUpdateObserver { +extension type ConfigUpdateObserverJsImpl._(JSObject _) implements JSObject { external JSAny get next; external JSAny get error; external JSAny get complete; } -@JS() -@staticInterop -@anonymous -abstract class ConfigUpdateJsImpl {} - -extension ConfigUpdateJsImplExtension on ConfigUpdateJsImpl { +extension type ConfigUpdateJsImpl._(JSObject _) implements JSObject { external JSSet getUpdatedKeys(); } From e6c6cd29d1a399a6c7b5af6de51df7bec794a12c Mon Sep 17 00:00:00 2001 From: MichaelVerdon Date: Mon, 27 Oct 2025 12:01:12 +0000 Subject: [PATCH 3/5] fix: invalid interop type --- .../lib/src/interop/firebase_remote_config_interop.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart index ad7d65a570a5..a624ab27c341 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart @@ -50,7 +50,7 @@ external JSString getString(RemoteConfigJsImpl remoteConfig, JSString key); @JS() @staticInterop -external RemoteConfigValue getValue(RemoteConfigJsImpl remoteConfig, JSString key); +external ValueJsImpl getValue(RemoteConfigJsImpl remoteConfig, JSString key); @JS() @staticInterop From 8639e9b0c2138fec1580ccb7dfa63e907a9017f9 Mon Sep 17 00:00:00 2001 From: MichaelVerdon Date: Mon, 27 Oct 2025 12:05:49 +0000 Subject: [PATCH 4/5] fix: getValue to dart --- .../lib/src/interop/firebase_remote_config.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart index 815df397b1fa..795b594ca84d 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart @@ -119,10 +119,10 @@ class RemoteConfig RemoteConfigValue getValue(String key) => RemoteConfigValue( utf8.encode( - remote_config_interop.getValue(jsObject, key.toJS).asString(), + remote_config_interop.getValue(jsObject, key.toJS).asString().toDart, ), getSource( - remote_config_interop.getValue(jsObject, key.toJS).asString(), + remote_config_interop.getValue(jsObject, key.toJS).asString().toDart, ), ); From b500a09e701ef699597b67e4b184c81f2ec62045 Mon Sep 17 00:00:00 2001 From: MichaelVerdon Date: Mon, 27 Oct 2025 12:12:49 +0000 Subject: [PATCH 5/5] fix: lint --- .../lib/src/interop/firebase_remote_config.dart | 3 ++- .../lib/src/interop/firebase_remote_config_interop.dart | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart index 795b594ca84d..473fb662131e 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config.dart @@ -108,7 +108,8 @@ class RemoteConfig /// Returns all config values. Map getAll() { // Return type is Map - final map = remote_config_interop.getAll(jsObject).dartify()! as Map; + final map = remote_config_interop.getAll(jsObject).dartify()! + as Map; // Cast the map to to mirror expected return type: Record; final castMap = map.cast(); final entries = castMap.keys.map>( diff --git a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart index a624ab27c341..4bbbb34cec76 100644 --- a/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart +++ b/packages/firebase_remote_config/firebase_remote_config_web/lib/src/interop/firebase_remote_config_interop.dart @@ -10,7 +10,6 @@ library; import 'dart:js_interop'; import 'package:firebase_core_web/firebase_core_web_interop.dart'; -import 'package:firebase_remote_config_platform_interface/firebase_remote_config_platform_interface.dart'; @JS() @staticInterop