diff --git a/.github/workflows/all_plugins.yaml b/.github/workflows/all_plugins.yaml index 729eaaa81331..8b7a9d2cad71 100644 --- a/.github/workflows/all_plugins.yaml +++ b/.github/workflows/all_plugins.yaml @@ -86,6 +86,7 @@ jobs: - uses: Homebrew/actions/setup-homebrew@master - name: 'Install Tools' run: | + brew install python3 flutter pub global activate flutter_plugin_tools brew install swiftformat brew install clang-format diff --git a/.github/workflows/e2e_tests.yaml b/.github/workflows/e2e_tests.yaml index 7898b43a3573..4a89b06a1fb5 100644 --- a/.github/workflows/e2e_tests.yaml +++ b/.github/workflows/e2e_tests.yaml @@ -272,7 +272,7 @@ jobs: key: firebase-emulators-v3-${{ github.run_id }} restore-keys: firebase-emulators-v3 - name: Start Firebase Emulator - run: cd ./.github/workflows/scripts && ./start-firebase-emulator.sh + run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh - name: 'E2E Tests' working-directory: ${{ matrix.working_directory }} # Web devices are not supported for the `flutter test` command yet. As a diff --git a/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth.dart b/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth.dart index 729d18314965..644ec33ca762 100644 --- a/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth.dart +++ b/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth.dart @@ -21,19 +21,23 @@ export 'auth_interop.dart'; /// Given an AppJSImp, return the Auth instance. Auth getAuthInstance(App app) { - return Auth.getInstance(auth_interop.initializeAuth( + // Default persistence can be seen here + // https://github.com/firebase/firebase-js-sdk/blob/master/packages/auth/src/platform_browser/index.ts#L47 + final persistences = [ + auth_interop.indexedDBLocalPersistence, + auth_interop.browserLocalPersistence, + auth_interop.browserSessionPersistence, + ]; + return Auth.getInstance( + auth_interop.initializeAuth( app.jsObject, - jsify({ - 'errorMap': auth_interop.debugErrorMap, - // Default persistence can be seen here - // https://github.com/firebase/firebase-js-sdk/blob/master/packages/auth/src/platform_browser/index.ts#L47 - 'persistence': [ - auth_interop.indexedDBLocalPersistence, - auth_interop.browserLocalPersistence, - auth_interop.browserSessionPersistence - ], - 'popupRedirectResolver': auth_interop.browserPopupRedirectResolver - }))); + auth_interop.AuthOptions( + errorMap: auth_interop.debugErrorMap, + persistence: persistences.toJS, + popupRedirectResolver: auth_interop.browserPopupRedirectResolver, + ), + ), + ); } /// User profile information, visible only to the Firebase project's apps. @@ -379,6 +383,7 @@ class Auth extends JsObjectWrapper { } JSFunction? _onAuthUnsubscribe; + // TODO(rrousselGit): fix memory leak – the controller isn't closed even in onCancel // ignore: close_sinks StreamController? _changeController; @@ -420,6 +425,7 @@ class Auth extends JsObjectWrapper { } JSFunction? _onIdTokenChangedUnsubscribe; + // TODO(rrousselGit): fix memory leak – the controller isn't closed even in onCancel // ignore: close_sinks StreamController? _idTokenChangedController; diff --git a/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth_interop.dart b/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth_interop.dart index be6ebaec8df7..2a2dd32711fc 100644 --- a/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth_interop.dart +++ b/packages/firebase_auth/firebase_auth_web/lib/src/interop/auth_interop.dart @@ -18,10 +18,21 @@ import 'package:firebase_core_web/firebase_core_web_interop.dart'; external AuthJsImpl getAuth([AppJsImpl? app]); @JS() -external AuthJsImpl initializeAuth(AppJsImpl app, JSAny debugErrorMap); +external AuthJsImpl initializeAuth(AppJsImpl app, AuthOptions authOptions); + +extension type AuthOptions._(JSObject o) implements JSObject { + external AuthOptions({ + JSObject errorMap, + JSArray? persistence, + JSObject? popupRedirectResolver, + }); + external JSObject? get errorMap; + external JSArray? get persistence; + external JSObject? get popupRedirectResolver; +} @JS('debugErrorMap') -external JSAny get debugErrorMap; +external JSObject get debugErrorMap; @JS() external JSPromise applyActionCode(AuthJsImpl auth, JSString oobCode); @@ -348,10 +359,7 @@ extension UserJsImplExtension on UserJsImpl { /// /// See: @JS('Persistence') -@staticInterop -class Persistence {} - -extension PersistenceExtension on Persistence { +extension type Persistence._(JSObject _) implements JSObject { external JSString get type; } @@ -809,7 +817,7 @@ extension AdditionalUserInfoJsImplExtension on AdditionalUserInfoJsImpl { @staticInterop @anonymous class AuthSettings { - // external factory AuthSettings({JSBoolean appVerificationDisabledForTesting}); +// external factory AuthSettings({JSBoolean appVerificationDisabledForTesting}); } extension AuthSettingsExtension on AuthSettings { @@ -819,7 +827,7 @@ extension AuthSettingsExtension on AuthSettings { @JS() @staticInterop -external JSAny get browserPopupRedirectResolver; +external JSObject get browserPopupRedirectResolver; /// https://firebase.google.com/docs/reference/js/auth.multifactoruser.md#multifactoruser_interface @JS() diff --git a/packages/firebase_auth/firebase_auth_web/pubspec.yaml b/packages/firebase_auth/firebase_auth_web/pubspec.yaml index 97eba5f32515..b1264880e3ae 100644 --- a/packages/firebase_auth/firebase_auth_web/pubspec.yaml +++ b/packages/firebase_auth/firebase_auth_web/pubspec.yaml @@ -5,7 +5,7 @@ repository: https://github.com/firebase/flutterfire/tree/master/packages/firebas version: 5.9.4 environment: - sdk: '>=3.2.0 <4.0.0' + sdk: '>=3.3.0 <4.0.0' flutter: '>=3.3.0' dependencies: