@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
text/typescript
/* 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');