@react-native-firebase/app
Version:
A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto
220 lines (204 loc) • 7.43 kB
text/typescript
/*
* Copyright (c) 2016-present Invertase Limited & Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this library except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { MODULAR_DEPRECATION_ARG } from './common';
import type { ReactNativeFirebase, LogCallback, LogOptions } from './types/app';
import {
deleteApp as deleteAppCompat,
getApp as getAppCompat,
getApps as getAppsCompat,
initializeApp as initializeAppCompat,
setLogLevel as setLogLevelCompat,
setReactNativeAsyncStorage as setReactNativeAsyncStorageCompat,
} from './internal/registry/app';
import { setUserLogHandler } from './internal/logger';
import { version as sdkVersion } from './version';
import { getReactNativeModule } from './internal/nativeModule';
import { APP_NATIVE_MODULE } from './internal/constants';
import type { RNFBAppModuleInterface } from './internal/NativeModules';
/**
* Renders this app unusable and frees the resources of all associated services.
* @param app - The app to delete.
* @returns Promise<void>
*/
export function deleteApp(app: ReactNativeFirebase.FirebaseApp): Promise<void> {
return deleteAppCompat.call(
null,
app.name,
(app as any)._nativeInitialized,
// @ts-expect-error - Extra arg used by deprecation proxy to detect modular calls
MODULAR_DEPRECATION_ARG,
);
}
/**
* Registers a library's name and version for platform logging purposes.
* @param _libraryKeyOrName - library name or key.
* @param _version - library version.
* @param _variant - library variant. Optional.
* @returns Promise<void>
*/
export function registerVersion(
_libraryKeyOrName: string,
_version: string,
_variant?: string,
): Promise<void> {
throw new Error('registerVersion is only supported on Web');
}
/**
* Sets log handler for VertexAI only currently.
* @param logCallback - The callback function to handle logs.
* @param options - Optional settings for log handling.
* @returns void
*/
export function onLog(logCallback: LogCallback | null, options?: LogOptions): void {
setUserLogHandler(logCallback, options);
}
/**
* Gets the list of all initialized apps.
* @returns An array of all initialized Firebase apps.
*/
export function getApps(): ReactNativeFirebase.FirebaseApp[] {
return getAppsCompat.call(
null,
// @ts-expect-error - Extra arg used by deprecation proxy to detect modular calls
MODULAR_DEPRECATION_ARG,
);
}
/**
* Initializes a Firebase app with the provided options and name.
* @param options - Options to configure the services used in the app.
* @param configOrName - The optional name of the app, or config for the app to initialize (a name of '[DEFAULT]' will be used if omitted).
* @returns The initialized Firebase app.
*/
export function initializeApp(
options: ReactNativeFirebase.FirebaseAppOptions,
configOrName?: string | ReactNativeFirebase.FirebaseAppConfig,
): Promise<ReactNativeFirebase.FirebaseApp> {
return initializeAppCompat.call(
null,
options,
configOrName,
// @ts-expect-error - Extra arg used by deprecation proxy to detect modular calls
MODULAR_DEPRECATION_ARG,
);
}
/**
* Retrieves an instance of a Firebase app.
* @param name - The optional name of the app to return ('[DEFAULT]' if omitted).
* @returns The requested Firebase app instance.
*/
export function getApp(name?: string): ReactNativeFirebase.FirebaseApp {
return getAppCompat.call(
null,
name,
// @ts-expect-error - Extra arg used by deprecation proxy to detect modular calls
MODULAR_DEPRECATION_ARG,
);
}
/**
* Sets the log level across all Firebase SDKs.
* @param logLevel - The log level to set ('debug', 'verbose', 'info', 'warn', 'error', 'silent').
* @returns void
*/
export function setLogLevel(logLevel: ReactNativeFirebase.LogLevelString): void {
return setLogLevelCompat.call(
null,
logLevel,
// @ts-expect-error - Extra arg used by deprecation proxy to detect modular calls
MODULAR_DEPRECATION_ARG,
);
}
/**
* The `AsyncStorage` implementation to use for persisting data on 'Other' platforms.
* If not specified, in memory persistence is used.
*
* This is required if you want to persist things like Auth sessions, Analytics device IDs, etc.
*/
export function setReactNativeAsyncStorage(
asyncStorage: ReactNativeFirebase.ReactNativeAsyncStorage,
): void {
return setReactNativeAsyncStorageCompat.call(
null,
asyncStorage,
// @ts-expect-error - Extra arg used by deprecation proxy to detect modular calls
MODULAR_DEPRECATION_ARG,
);
}
/**
* Gets react-native-firebase specific "meta" data from native Info.plist / AndroidManifest.xml
* @returns map of key / value pairs containing native meta data
*/
export function metaGetAll(): Promise<{ [key: string]: string | boolean }> {
const RNFBAppModule = getReactNativeModule(
APP_NATIVE_MODULE,
) as unknown as RNFBAppModuleInterface;
return RNFBAppModule.metaGetAll();
}
/**
* Gets react-native-firebase specific "firebase.json" data
* @returns map of key / value pairs containing native firebase.json constants
*/
export function jsonGetAll(): Promise<{ [key: string]: string | boolean }> {
const RNFBAppModule = getReactNativeModule(
APP_NATIVE_MODULE,
) as unknown as RNFBAppModuleInterface;
return RNFBAppModule.jsonGetAll();
}
/**
* Clears react-native-firebase specific native preferences
* @returns Promise<void>
*/
export function preferencesClearAll(): Promise<void> {
const RNFBAppModule = getReactNativeModule(
APP_NATIVE_MODULE,
) as unknown as RNFBAppModuleInterface;
return RNFBAppModule.preferencesClearAll();
}
/**
* Gets react-native-firebase specific native preferences
* @returns map of key / value pairs containing native preferences data
*/
export function preferencesGetAll(): Promise<{ [key: string]: string | boolean }> {
const RNFBAppModule = getReactNativeModule(
APP_NATIVE_MODULE,
) as unknown as RNFBAppModuleInterface;
return RNFBAppModule.preferencesGetAll();
}
/**
* Sets react-native-firebase specific native boolean preference
* @param key the name of the native preference to set
* @param value the value of the native preference to set
* @returns Promise<void>
*/
export function preferencesSetBool(key: string, value: boolean): Promise<void> {
const RNFBAppModule = getReactNativeModule(
APP_NATIVE_MODULE,
) as unknown as RNFBAppModuleInterface;
return RNFBAppModule.preferencesSetBool(key, value);
}
/**
* Sets react-native-firebase specific native string preference
* @param key the name of the native preference to set
* @param value the value of the native preference to set
* @returns Promise<void>
*/
export function preferencesSetString(key: string, value: string): Promise<void> {
const RNFBAppModule = getReactNativeModule(
APP_NATIVE_MODULE,
) as unknown as RNFBAppModuleInterface;
return RNFBAppModule.preferencesSetString(key, value);
}
export const SDK_VERSION = sdkVersion;