From f1c8d3806962a760aa0a78387e6b37140163eae6 Mon Sep 17 00:00:00 2001 From: Christina Holland Date: Wed, 5 Jul 2023 13:58:59 -0700 Subject: [PATCH] Use ReactNativeAsyncStorage from community package. (#7128) --- .changeset/two-bags-jog.md | 6 ++++++ docs-devsite/auth.md | 11 ----------- packages/auth/index.doc.ts | 5 +---- packages/auth/index.rn.ts | 29 +++-------------------------- packages/auth/package.json | 1 + yarn.lock | 14 ++++++++++++++ 6 files changed, 25 insertions(+), 41 deletions(-) create mode 100644 .changeset/two-bags-jog.md diff --git a/.changeset/two-bags-jog.md b/.changeset/two-bags-jog.md new file mode 100644 index 00000000000..d569c90b4f4 --- /dev/null +++ b/.changeset/two-bags-jog.md @@ -0,0 +1,6 @@ +--- +'@firebase/auth': major +'firebase': major +--- + +Change `getAuth()` in the React Native bundle to default to importing `AsyncStorage` from `@react-native-async-storage/async-storage` instead of from the `react-native` core package (which has recently removed it). diff --git a/docs-devsite/auth.md b/docs-devsite/auth.md index 9d5a9a9ab58..4b76e06ee49 100644 --- a/docs-devsite/auth.md +++ b/docs-devsite/auth.md @@ -157,7 +157,6 @@ Firebase Authentication | [OperationType](./auth.md#operationtype) | Enumeration of supported operation types. | | [prodErrorMap](./auth.md#proderrormap) | A minimal error map with all verbose error messages stripped.See discussion at [AuthErrorMap](./auth.autherrormap.md#autherrormap_interface) | | [ProviderId](./auth.md#providerid) | Enumeration of supported providers. | -| [reactNativeLocalPersistence](./auth.md#reactnativelocalpersistence) | An implementation of [Persistence](./auth.persistence.md#persistence_interface) of type 'LOCAL' for use in React Native environments. | | [SignInMethod](./auth.md#signinmethod) | Enumeration of supported sign-in methods. | ## Type Aliases @@ -1997,16 +1996,6 @@ ProviderId: { } ``` -## reactNativeLocalPersistence - -An implementation of [Persistence](./auth.persistence.md#persistence_interface) of type 'LOCAL' for use in React Native environments. - -Signature: - -```typescript -reactNativeLocalPersistence: Persistence -``` - ## SignInMethod Enumeration of supported sign-in methods. diff --git a/packages/auth/index.doc.ts b/packages/auth/index.doc.ts index 2ecdcf942c8..ec7ec300fa0 100644 --- a/packages/auth/index.doc.ts +++ b/packages/auth/index.doc.ts @@ -28,7 +28,4 @@ export * from './index'; export { cordovaPopupRedirectResolver } from './index.cordova'; -export { - reactNativeLocalPersistence, - getReactNativePersistence -} from './index.rn'; +export { getReactNativePersistence } from './index.rn'; diff --git a/packages/auth/index.rn.ts b/packages/auth/index.rn.ts index cfd99b3c8f9..22ec0273441 100644 --- a/packages/auth/index.rn.ts +++ b/packages/auth/index.rn.ts @@ -22,15 +22,14 @@ * just use index.ts */ -import * as ReactNative from 'react-native'; - import { FirebaseApp, getApp, _getProvider } from '@firebase/app'; -import { Auth, Persistence } from './src/model/public_types'; +import { Auth } from './src/model/public_types'; import { initializeAuth } from './src'; import { registerAuth } from './src/core/auth/register'; import { ClientPlatform } from './src/core/util/version'; import { getReactNativePersistence } from './src/platform_react_native/persistence/react_native'; +import ReactNativeAsyncStorage from '@react-native-async-storage/async-storage'; // Core functionality shared by all clients export * from './index.shared'; @@ -50,28 +49,6 @@ export { // MFA export { PhoneMultiFactorGenerator } from './src/platform_browser/mfa/assertions/phone'; -/** - * An implementation of {@link Persistence} of type 'LOCAL' for use in React - * Native environments. - * - * @public - */ -export const reactNativeLocalPersistence: Persistence = - getReactNativePersistence({ - getItem(...args) { - // Called inline to avoid deprecation warnings on startup. - return ReactNative.AsyncStorage.getItem(...args); - }, - setItem(...args) { - // Called inline to avoid deprecation warnings on startup. - return ReactNative.AsyncStorage.setItem(...args); - }, - removeItem(...args) { - // Called inline to avoid deprecation warnings on startup. - return ReactNative.AsyncStorage.removeItem(...args); - } - }); - export { getReactNativePersistence }; export function getAuth(app: FirebaseApp = getApp()): Auth { @@ -82,7 +59,7 @@ export function getAuth(app: FirebaseApp = getApp()): Auth { } return initializeAuth(app, { - persistence: reactNativeLocalPersistence + persistence: getReactNativePersistence(ReactNativeAsyncStorage) }); } diff --git a/packages/auth/package.json b/packages/auth/package.json index f036b1eeb99..7cc010fdd0b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -114,6 +114,7 @@ "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", + "@react-native-async-storage/async-storage": "1.17.12", "node-fetch": "2.6.7", "tslib": "^2.1.0" }, diff --git a/yarn.lock b/yarn.lock index 49a3afbee4e..16a68b598f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3070,6 +3070,13 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@react-native-async-storage/async-storage@1.17.12": + version "1.17.12" + resolved "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.17.12.tgz#a39e4df5b06795ce49b2ca5b7ca9b8faadf8e621" + integrity sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw== + dependencies: + merge-options "^3.0.4" + "@rollup/plugin-alias@3.1.9": version "3.1.9" resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz#a5d267548fe48441f34be8323fb64d1d4a1b3fdf" @@ -12306,6 +12313,13 @@ merge-descriptors@1.0.1: resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"