UNPKG

@react-native-firebase/remote-config

Version:

React Native Firebase - React Native Firebase provides native integration with Remote Config, allowing you to change the appearance and/or functionality of your app without requiring an app update.

62 lines (51 loc) 2.22 kB
/* eslint-disable @typescript-eslint/no-wrapper-object-types */ import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; export type LastFetchStatus = 'success' | 'failure' | 'no_fetch_yet' | 'throttled' | 'unknown'; export interface StoredConfigValue { // Codegen (RN 0.86+) rejects heterogeneous unions (string|number|boolean). // Native already treats this as Object / id; JS narrows via RemoteConfigValue helpers. value: Object; source: 'default' | 'remote' | 'static' | 'unknown'; } export interface RemoteConfigConstants { fetchTimeout: number; minimumFetchInterval: number; lastFetchTime: number; lastFetchStatus: LastFetchStatus; values: { [key: string]: StoredConfigValue }; } export interface BooleanRemoteConfigResult { result: boolean; constants: RemoteConfigConstants; } export interface NullRemoteConfigResult { result: string | null; constants: RemoteConfigConstants; } export interface VoidRemoteConfigResult { constants: RemoteConfigConstants; } export interface ConfigSettings { fetchTimeout: number; minimumFetchInterval: number; } export interface Spec extends TurboModule { getConstants(): RemoteConfigConstants; activate(appName: string): Promise<BooleanRemoteConfigResult>; setConfigSettings(appName: string, settings: ConfigSettings): Promise<VoidRemoteConfigResult>; fetch(appName: string, expirationDurationSeconds: number): Promise<VoidRemoteConfigResult>; fetchAndActivate(appName: string): Promise<BooleanRemoteConfigResult>; ensureInitialized(appName: string): Promise<VoidRemoteConfigResult>; setDefaults( appName: string, // Codegen rejects heterogeneous value unions; ReadableMap on native. defaults: Object, ): Promise<NullRemoteConfigResult>; setDefaultsFromResource(appName: string, resourceName: string): Promise<NullRemoteConfigResult>; reset(appName: string): Promise<VoidRemoteConfigResult>; onConfigUpdated(appName: string): void; removeConfigUpdateRegistration(appName: string): void; setCustomSignals(appName: string, customSignals: Object): Promise<VoidRemoteConfigResult>; } export default TurboModuleRegistry.getEnforcing<Spec>('NativeRNFBTurboConfig');