@react-native-firebase/remote-config 25.0.1 → 26.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/RNFBRemoteConfig.podspec +7 -6
  3. package/android/build.gradle +19 -0
  4. package/android/src/reactnative/java/io/invertase/firebase/config/{ReactNativeFirebaseConfigModule.java → NativeRNFBTurboConfig.java} +53 -40
  5. package/android/src/reactnative/java/io/invertase/firebase/config/ReactNativeFirebaseConfigPackage.java +1 -1
  6. package/android/src/reactnative/java/io/invertase/firebase/config/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboConfigSpec.java +115 -0
  7. package/android/src/reactnative/java/io/invertase/firebase/config/generated/jni/CMakeLists.txt +36 -0
  8. package/android/src/reactnative/java/io/invertase/firebase/config/generated/jni/RNFBRemoteConfigTurboModules-generated.cpp +98 -0
  9. package/android/src/reactnative/java/io/invertase/firebase/config/generated/jni/RNFBRemoteConfigTurboModules.h +31 -0
  10. package/android/src/reactnative/java/io/invertase/firebase/config/generated/jni/react/renderer/components/RNFBRemoteConfigTurboModules/RNFBRemoteConfigTurboModulesJSI-generated.cpp +110 -0
  11. package/android/src/reactnative/java/io/invertase/firebase/config/generated/jni/react/renderer/components/RNFBRemoteConfigTurboModules/RNFBRemoteConfigTurboModulesJSI.h +471 -0
  12. package/dist/module/index.js +499 -5
  13. package/dist/module/index.js.map +1 -1
  14. package/dist/module/version.js +1 -1
  15. package/dist/typescript/lib/index.d.ts +83 -5
  16. package/dist/typescript/lib/index.d.ts.map +1 -1
  17. package/dist/typescript/lib/types/internal.d.ts +25 -24
  18. package/dist/typescript/lib/types/internal.d.ts.map +1 -1
  19. package/dist/typescript/lib/types/remote-config.d.ts +24 -3
  20. package/dist/typescript/lib/types/remote-config.d.ts.map +1 -1
  21. package/dist/typescript/lib/version.d.ts +1 -1
  22. package/ios/RNFBConfig/RNFBConfigModule.h +3 -2
  23. package/ios/RNFBConfig/{RNFBConfigModule.m → RNFBConfigModule.mm} +137 -93
  24. package/ios/RNFBConfig.xcodeproj/project.pbxproj +8 -8
  25. package/ios/generated/RCTAppDependencyProvider.h +25 -0
  26. package/ios/generated/RCTAppDependencyProvider.mm +55 -0
  27. package/ios/generated/RCTModulesConformingToProtocolsProvider.h +18 -0
  28. package/ios/generated/RCTModulesConformingToProtocolsProvider.mm +33 -0
  29. package/ios/generated/RCTThirdPartyComponentsProvider.h +16 -0
  30. package/ios/generated/RCTThirdPartyComponentsProvider.mm +23 -0
  31. package/ios/generated/RNFBRemoteConfigTurboModules/RNFBRemoteConfigTurboModules-generated.mm +121 -0
  32. package/ios/generated/RNFBRemoteConfigTurboModules/RNFBRemoteConfigTurboModules.h +172 -0
  33. package/ios/generated/RNFBRemoteConfigTurboModulesJSI-generated.cpp +110 -0
  34. package/ios/generated/RNFBRemoteConfigTurboModulesJSI.h +471 -0
  35. package/ios/generated/ReactAppDependencyProvider.podspec +34 -0
  36. package/lib/index.ts +683 -8
  37. package/lib/types/internal.ts +25 -44
  38. package/lib/types/remote-config.ts +28 -3
  39. package/lib/version.ts +1 -1
  40. package/package.json +23 -5
  41. package/react-native.config.js +10 -0
  42. package/specs/NativeRNFBTurboConfig.ts +60 -0
  43. package/typedoc.json +1 -1
  44. package/dist/module/modular.js +0 -155
  45. package/dist/module/modular.js.map +0 -1
  46. package/dist/module/namespaced.js +0 -400
  47. package/dist/module/namespaced.js.map +0 -1
  48. package/dist/module/types/namespaced.js +0 -24
  49. package/dist/module/types/namespaced.js.map +0 -1
  50. package/dist/typescript/lib/modular.d.ts +0 -76
  51. package/dist/typescript/lib/modular.d.ts.map +0 -1
  52. package/dist/typescript/lib/namespaced.d.ts +0 -11
  53. package/dist/typescript/lib/namespaced.d.ts.map +0 -1
  54. package/dist/typescript/lib/types/namespaced.d.ts +0 -124
  55. package/dist/typescript/lib/types/namespaced.d.ts.map +0 -1
  56. package/lib/modular.ts +0 -197
  57. package/lib/namespaced.ts +0 -552
  58. package/lib/types/namespaced.ts +0 -163
@@ -1,12 +1,12 @@
1
1
  import type { ConfigUpdateObserver, FetchStatus, RemoteConfig, RemoteConfigSettings, Unsubscribe, Value, ValueSource } from './remote-config';
2
- import type { FirebaseRemoteConfigTypes } from './namespaced';
3
2
  export type ConfigValueSourceInternal = ValueSource;
4
3
  export type LastFetchStatusInternal = FetchStatus;
5
- export type RemoteConfigModularDeprecationArg = string;
6
- export type WithRemoteConfigDeprecationArg<F> = F extends (...args: infer P) => infer R ? (...args: [...P, RemoteConfigModularDeprecationArg?]) => R : never;
7
- export interface AppWithRemoteConfigInternal {
8
- remoteConfig(deprecationArg?: RemoteConfigModularDeprecationArg): RemoteConfig;
9
- }
4
+ export type OnConfigUpdatedListenerCallback = (event?: {
5
+ updatedKeys: string[];
6
+ }, error?: RemoteConfigUpdateErrorInternal) => void;
7
+ export type CallbackOrObserver<T extends (...args: any[]) => any> = T | {
8
+ next: T;
9
+ };
10
10
  export interface ConfigSettingsStateInternal {
11
11
  fetchTimeoutMillis: number;
12
12
  minimumFetchIntervalMillis: number;
@@ -39,6 +39,7 @@ export interface RemoteConfigUpdateErrorEventInternal extends RemoteConfigUpdate
39
39
  resultType?: string;
40
40
  }
41
41
  export interface RNFBConfigModule {
42
+ getConstants(): NativeRemoteConfigConstants;
42
43
  activate(): Promise<NativeRemoteConfigResult<boolean>>;
43
44
  setConfigSettings(settings: {
44
45
  fetchTimeout: number;
@@ -61,34 +62,34 @@ export interface RemoteConfigInternal extends RemoteConfig {
61
62
  defaultConfig: {
62
63
  [key: string]: string | number | boolean;
63
64
  };
64
- activate(deprecationArg?: RemoteConfigModularDeprecationArg): Promise<boolean>;
65
- ensureInitialized(deprecationArg?: RemoteConfigModularDeprecationArg): Promise<void>;
66
- fetchAndActivate(deprecationArg?: RemoteConfigModularDeprecationArg): Promise<boolean>;
67
- fetch(expirationDurationSeconds?: number, deprecationArg?: RemoteConfigModularDeprecationArg): Promise<void>;
68
- getAll(deprecationArg?: RemoteConfigModularDeprecationArg): Record<string, Value>;
69
- getBoolean(key: string, deprecationArg?: RemoteConfigModularDeprecationArg): boolean;
70
- getNumber(key: string, deprecationArg?: RemoteConfigModularDeprecationArg): number;
71
- getString(key: string, deprecationArg?: RemoteConfigModularDeprecationArg): string;
72
- getValue(key: string, deprecationArg?: RemoteConfigModularDeprecationArg): Value;
73
- reset(deprecationArg?: RemoteConfigModularDeprecationArg): Promise<void>;
65
+ activate(): Promise<boolean>;
66
+ ensureInitialized(): Promise<void>;
67
+ fetchAndActivate(): Promise<boolean>;
68
+ fetch(expirationDurationSeconds?: number): Promise<void>;
69
+ getAll(): Record<string, Value>;
70
+ getBoolean(key: string): boolean;
71
+ getNumber(key: string): number;
72
+ getString(key: string): string;
73
+ getValue(key: string): Value;
74
+ reset(): Promise<void>;
74
75
  setConfigSettings(settings: RemoteConfigSettings | {
75
76
  minimumFetchIntervalMillis?: number;
76
77
  fetchTimeMillis?: number;
77
78
  fetchTimeoutMillis?: number;
78
- }, deprecationArg?: RemoteConfigModularDeprecationArg): Promise<void>;
79
+ }, fromSettingsSetter?: boolean): Promise<void>;
79
80
  setDefaults(defaults: {
80
81
  [key: string]: string | number | boolean;
81
- }, deprecationArg?: RemoteConfigModularDeprecationArg): Promise<null>;
82
- setDefaultsFromResource(resourceName: string, deprecationArg?: RemoteConfigModularDeprecationArg): Promise<null>;
83
- onConfigUpdate(observer: ConfigUpdateObserver, deprecationArg?: RemoteConfigModularDeprecationArg): Unsubscribe;
84
- onConfigUpdated(listenerOrObserver: FirebaseRemoteConfigTypes.CallbackOrObserver<FirebaseRemoteConfigTypes.OnConfigUpdatedListenerCallback>, deprecationArg?: RemoteConfigModularDeprecationArg): Unsubscribe;
82
+ }, fromDefaultConfigSetter?: boolean): Promise<null>;
83
+ setDefaultsFromResource(resourceName: string): Promise<null>;
84
+ onConfigUpdate(observer: ConfigUpdateObserver): Unsubscribe;
85
+ onConfigUpdated(listenerOrObserver: CallbackOrObserver<OnConfigUpdatedListenerCallback>): Unsubscribe;
85
86
  readonly native: RNFBConfigModule;
86
- _promiseWithConstants(promise: Promise<NativeRemoteConfigResult<void>>, deprecationArg?: RemoteConfigModularDeprecationArg): Promise<void>;
87
- _promiseWithConstants<T>(promise: Promise<NativeRemoteConfigResult<T>>, deprecationArg?: RemoteConfigModularDeprecationArg): Promise<T>;
87
+ _promiseWithConstants(promise: Promise<NativeRemoteConfigResult<void>>): Promise<void>;
88
+ _promiseWithConstants<T>(promise: Promise<NativeRemoteConfigResult<T>>): Promise<T>;
88
89
  }
89
90
  declare module '@react-native-firebase/app/dist/module/internal/NativeModules' {
90
91
  interface ReactNativeFirebaseNativeModules {
91
- RNFBConfigModule: RNFBConfigModule;
92
+ NativeRNFBTurboConfig: RNFBConfigModule;
92
93
  }
93
94
  }
94
95
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../lib/types/internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../lib/types/internal.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,29 @@
1
- import type { FirebaseApp } from '@firebase/app';
2
- import type { ReactNativeFirebase } from '@react-native-firebase/app';
1
+ import type { FirebaseApp, FirebaseError } from '@firebase/app';
3
2
  export type LogLevel = 'debug' | 'error' | 'silent';
4
3
  export type FetchStatus = 'success' | 'failure' | 'no_fetch_yet' | 'throttled';
5
4
  export type ValueSource = 'static' | 'default' | 'remote';
5
+ export interface FirebaseRemoteConfigObject {
6
+ [key: string]: string;
7
+ }
8
+ export interface FirebaseExperimentDescription {
9
+ experimentId: string;
10
+ variantId: string;
11
+ experimentStartTime: string;
12
+ triggerTimeoutMillis: string;
13
+ timeToLiveMillis: string;
14
+ affectedParameterKeys?: string[];
15
+ }
16
+ export interface FetchResponse {
17
+ status: number;
18
+ eTag?: string;
19
+ config?: FirebaseRemoteConfigObject;
20
+ templateVersion?: number;
21
+ experiments?: FirebaseExperimentDescription[];
22
+ }
23
+ export interface RemoteConfigOptions {
24
+ templateId?: string;
25
+ initialFetchResponse?: FetchResponse;
26
+ }
6
27
  export interface Value {
7
28
  getSource(): ValueSource;
8
29
  asBoolean(): boolean;
@@ -18,7 +39,7 @@ export interface ConfigUpdate {
18
39
  }
19
40
  export interface ConfigUpdateObserver {
20
41
  next: (configUpdate: ConfigUpdate) => void;
21
- error: (error: ReactNativeFirebase.NativeFirebaseError) => void;
42
+ error: (error: FirebaseError) => void;
22
43
  complete: () => void;
23
44
  }
24
45
  export type Unsubscribe = () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-config.d.ts","sourceRoot":"","sources":["../../../../lib/types/remote-config.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,KAAK;IACpB,SAAS,IAAI,WAAW,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC;IACrB,QAAQ,IAAI,MAAM,CAAC;IACnB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,mBAAmB,KAAK,IAAI,CAAC;IAChE,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,WAAW,CAAC;IAC7B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,aAAa,EAAE;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAC1C,CAAC;CACH"}
1
+ {"version":3,"file":"remote-config.d.ts","sourceRoot":"","sources":["../../../../lib/types/remote-config.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,0BAA0B;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,6BAA6B,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,aAAa,CAAC;CACtC;AAED,MAAM,WAAW,KAAK;IACpB,SAAS,IAAI,WAAW,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC;IACrB,QAAQ,IAAI,MAAM,CAAC;IACnB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,WAAW,CAAC;IAC7B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,aAAa,EAAE;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAC1C,CAAC;CACH"}
@@ -1,2 +1,2 @@
1
- export declare const version = "25.0.1";
1
+ export declare const version = "26.0.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -17,8 +17,9 @@
17
17
 
18
18
  #import <Foundation/Foundation.h>
19
19
 
20
- #import <React/RCTBridgeModule.h>
20
+ #import <React/RCTInvalidating.h>
21
+ #import "RNFBRemoteConfigTurboModules.h"
21
22
 
22
- @interface RNFBConfigModule : NSObject <RCTBridgeModule>
23
+ @interface RNFBConfigModule : NSObject <NativeRNFBTurboConfigSpec, RCTInvalidating>
23
24
 
24
25
  @end
@@ -17,10 +17,10 @@
17
17
 
18
18
  #import <Firebase/Firebase.h>
19
19
  #import <React/RCTConvert.h>
20
- #import <React/RCTUtils.h>
21
20
 
21
+ #import "RNFBApp/RCTConvert+FIRApp.h"
22
+ #import "RNFBApp/RNFBSharedUtils.h"
22
23
  #import "RNFBConfigModule.h"
23
- #import "RNFBSharedUtils.h"
24
24
 
25
25
  static NSString *const ON_CONFIG_UPDATED_EVENT = @"on_config_updated";
26
26
 
@@ -90,34 +90,32 @@ NSDictionary *convertFIRRemoteConfigValueToNSDictionary(FIRRemoteConfigValue *va
90
90
  };
91
91
  }
92
92
 
93
+ static FIRApp *firebaseAppForName(NSString *appName) {
94
+ return [RCTConvert firAppFromString:appName];
95
+ }
96
+
93
97
  #pragma mark -
94
98
  #pragma mark Module Setup
95
99
 
96
- RCT_EXPORT_MODULE();
97
-
98
- - (dispatch_queue_t)methodQueue {
99
- return dispatch_get_main_queue();
100
- }
100
+ RCT_EXPORT_MODULE(NativeRNFBTurboConfig)
101
101
 
102
102
  + (BOOL)requiresMainQueueSetup {
103
- return YES;
103
+ return NO;
104
104
  }
105
105
 
106
- - (id)init {
106
+ - (instancetype)init {
107
107
  self = [super init];
108
- static dispatch_once_t onceToken;
109
- dispatch_once(&onceToken, ^{
110
- configUpdateHandlers = [[NSMutableDictionary alloc] init];
111
- });
108
+ if (self) {
109
+ static dispatch_once_t onceToken;
110
+ dispatch_once(&onceToken, ^{
111
+ configUpdateHandlers = [[NSMutableDictionary alloc] init];
112
+ });
113
+ }
112
114
  return self;
113
115
  }
114
116
 
115
- - (void)dealloc {
116
- [self invalidate];
117
- }
118
-
119
117
  - (void)invalidate {
120
- for (NSString *key in configUpdateHandlers) {
118
+ for (NSString *key in [configUpdateHandlers allKeys]) {
121
119
  FIRConfigUpdateListenerRegistration *registration = [configUpdateHandlers objectForKey:key];
122
120
  [registration remove];
123
121
  }
@@ -125,13 +123,29 @@ RCT_EXPORT_MODULE();
125
123
  [configUpdateHandlers removeAllObjects];
126
124
  }
127
125
 
126
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
127
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
128
+ return std::make_shared<facebook::react::NativeRNFBTurboConfigSpecJSI>(params);
129
+ }
130
+
131
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboConfig::Constants::Builder>)
132
+ constantsToExport {
133
+ return [_RCTTypedModuleConstants
134
+ newWithUnsafeDictionary:[self
135
+ getConstantsForApp:firebaseAppForName(DEFAULT_APP_DISPLAY_NAME)]];
136
+ }
137
+
138
+ - (facebook::react::ModuleConstants<JS::NativeRNFBTurboConfig::Constants::Builder>)getConstants {
139
+ return [self constantsToExport];
140
+ }
141
+
128
142
  #pragma mark -
129
143
  #pragma mark Firebase Config Methods
130
144
 
131
- RCT_EXPORT_METHOD(ensureInitialized
132
- : (FIRApp *)firebaseApp
133
- : (RCTPromiseResolveBlock)resolve
134
- : (RCTPromiseRejectBlock)reject) {
145
+ - (void)ensureInitialized:(NSString *)appName
146
+ resolve:(RCTPromiseResolveBlock)resolve
147
+ reject:(RCTPromiseRejectBlock)reject {
148
+ FIRApp *firebaseApp = firebaseAppForName(appName);
135
149
  FIRRemoteConfigInitializationCompletion completionHandler = ^(NSError *__nullable error) {
136
150
  if (error) {
137
151
  [RNFBSharedUtils rejectPromiseWithNSError:reject error:error];
@@ -144,11 +158,11 @@ RCT_EXPORT_METHOD(ensureInitialized
144
158
  ensureInitializedWithCompletionHandler:completionHandler];
145
159
  }
146
160
 
147
- RCT_EXPORT_METHOD(fetch
148
- : (FIRApp *)firebaseApp
149
- : (nonnull NSNumber *)expirationDuration
150
- : (RCTPromiseResolveBlock)resolve
151
- : (RCTPromiseRejectBlock)reject) {
161
+ - (void)fetch:(NSString *)appName
162
+ expirationDurationSeconds:(double)expirationDurationSeconds
163
+ resolve:(RCTPromiseResolveBlock)resolve
164
+ reject:(RCTPromiseRejectBlock)reject {
165
+ FIRApp *firebaseApp = firebaseAppForName(appName);
152
166
  FIRRemoteConfigFetchCompletion completionHandler =
153
167
  ^(FIRRemoteConfigFetchStatus status, NSError *__nullable error) {
154
168
  if (error) {
@@ -164,46 +178,23 @@ RCT_EXPORT_METHOD(fetch
164
178
  }
165
179
  };
166
180
 
167
- if (expirationDuration.integerValue == -1) {
181
+ if (expirationDurationSeconds == -1) {
168
182
  [[FIRRemoteConfig remoteConfigWithApp:firebaseApp]
169
183
  fetchWithCompletionHandler:completionHandler];
170
184
  } else {
171
185
  [[FIRRemoteConfig remoteConfigWithApp:firebaseApp]
172
- fetchWithExpirationDuration:expirationDuration.doubleValue
186
+ fetchWithExpirationDuration:expirationDurationSeconds
173
187
  completionHandler:completionHandler];
174
188
  }
175
189
  }
176
190
 
177
- RCT_EXPORT_METHOD(fetchAndActivate
178
- : (FIRApp *)firebaseApp
179
- : (RCTPromiseResolveBlock)resolve
180
- : (RCTPromiseRejectBlock)reject) {
181
- FIRRemoteConfigFetchAndActivateCompletion completionHandler =
182
- ^(FIRRemoteConfigFetchAndActivateStatus status, NSError *__nullable error) {
183
- if (error) {
184
- if (error.userInfo && error.userInfo[@"ActivationFailureReason"] != nil &&
185
- [error.userInfo[@"ActivationFailureReason"] containsString:@"already activated"]) {
186
- resolve([self resultWithConstants:@([RCTConvert BOOL:@(YES)]) firebaseApp:firebaseApp]);
187
- } else {
188
- [RNFBSharedUtils rejectPromiseWithNSError:reject error:error];
189
- }
190
- } else {
191
- if (status == FIRRemoteConfigFetchAndActivateStatusSuccessFetchedFromRemote) {
192
- resolve([self resultWithConstants:@([RCTConvert BOOL:@(YES)]) firebaseApp:firebaseApp]);
193
- return;
194
- }
195
- // if no data fetched remotely, return false
196
- resolve([self resultWithConstants:@([RCTConvert BOOL:@(NO)]) firebaseApp:firebaseApp]);
197
- }
198
- };
199
-
200
- [[FIRRemoteConfig remoteConfig] fetchAndActivateWithCompletionHandler:completionHandler];
201
- }
202
-
203
- RCT_EXPORT_METHOD(activate
204
- : (FIRApp *)firebaseApp
205
- : (RCTPromiseResolveBlock)resolve
206
- : (RCTPromiseRejectBlock)reject) {
191
+ // Shared by `activate:` and `fetchAndActivate:` below - resolves with the `changed` BOOL from
192
+ // `-[FIRRemoteConfig activateWithCompletion:]`, treating the SDK's "already activated" error as a
193
+ // non-error `false` result rather than a rejection, since it just means there was nothing new to
194
+ // activate.
195
+ - (void)rnfb_activateRemoteConfig:(FIRApp *)firebaseApp
196
+ resolve:(RCTPromiseResolveBlock)resolve
197
+ reject:(RCTPromiseRejectBlock)reject {
207
198
  [[FIRRemoteConfig remoteConfigWithApp:firebaseApp] activateWithCompletion:^(
208
199
  BOOL changed, NSError *_Nullable error) {
209
200
  if (error) {
@@ -219,41 +210,83 @@ RCT_EXPORT_METHOD(activate
219
210
  }];
220
211
  }
221
212
 
222
- RCT_EXPORT_METHOD(setConfigSettings
223
- : (FIRApp *)firebaseApp
224
- : (NSDictionary *)configSettings
225
- : (RCTPromiseResolveBlock)resolve
226
- : (RCTPromiseRejectBlock)reject) {
227
- FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
213
+ - (void)fetchAndActivate:(NSString *)appName
214
+ resolve:(RCTPromiseResolveBlock)resolve
215
+ reject:(RCTPromiseRejectBlock)reject {
216
+ // NOTE: We deliberately do not use `-[FIRRemoteConfig fetchAndActivateWithCompletionHandler:]`
217
+ // here. Its `FIRRemoteConfigFetchAndActivateStatus` result only reflects whether the fetch
218
+ // succeeded (`SuccessFetchedFromRemote`) vs fell back to previously fetched data
219
+ // (`SuccessUsingPreFetchedData`) - it does NOT reflect whether activation actually changed any
220
+ // config values, so it reports `SuccessFetchedFromRemote` (=> we'd resolve `true`) even when the
221
+ // fetched values are identical to what's already active. See
222
+ // https://github.com/invertase/react-native-firebase/issues/7779
223
+ //
224
+ // Instead we perform the fetch ourselves and hand off to the same activation + resolution logic
225
+ // `activate()` uses, so `fetchAndActivate()` resolves `true` only when activation changed the
226
+ // in-use config values - matching `activate()`'s own semantics as well as the Android
227
+ // implementation.
228
+ FIRApp *firebaseApp = firebaseAppForName(appName);
229
+ __weak RNFBConfigModule *weakSelf = self;
230
+ FIRRemoteConfigFetchCompletion fetchCompletion =
231
+ ^(FIRRemoteConfigFetchStatus status, NSError *__nullable error) {
232
+ RNFBConfigModule *strongSelf = weakSelf;
233
+ if (!strongSelf) {
234
+ return;
235
+ }
228
236
 
229
- if ([configSettings objectForKey:@"minimumFetchInterval"]) {
230
- remoteConfigSettings.minimumFetchInterval =
231
- [configSettings[@"minimumFetchInterval"] doubleValue];
232
- }
237
+ if (error) {
238
+ [RNFBSharedUtils
239
+ rejectPromiseWithUserInfo:reject
240
+ userInfo:[@{
241
+ @"code" : convertFIRRemoteConfigFetchStatusToNSString(status),
242
+ @"message" :
243
+ convertFIRRemoteConfigFetchStatusToNSStringDescription(status)
244
+ } mutableCopy]];
245
+ return;
246
+ }
233
247
 
234
- if ([configSettings objectForKey:@"fetchTimeout"]) {
235
- remoteConfigSettings.fetchTimeout = [configSettings[@"fetchTimeout"] doubleValue];
236
- }
248
+ [strongSelf rnfb_activateRemoteConfig:firebaseApp resolve:resolve reject:reject];
249
+ };
250
+
251
+ [[FIRRemoteConfig remoteConfigWithApp:firebaseApp] fetchWithCompletionHandler:fetchCompletion];
252
+ }
253
+
254
+ - (void)activate:(NSString *)appName
255
+ resolve:(RCTPromiseResolveBlock)resolve
256
+ reject:(RCTPromiseRejectBlock)reject {
257
+ FIRApp *firebaseApp = firebaseAppForName(appName);
258
+ [self rnfb_activateRemoteConfig:firebaseApp resolve:resolve reject:reject];
259
+ }
260
+
261
+ - (void)setConfigSettings:(NSString *)appName
262
+ settings:(JS::NativeRNFBTurboConfig::ConfigSettings &)configSettings
263
+ resolve:(RCTPromiseResolveBlock)resolve
264
+ reject:(RCTPromiseRejectBlock)reject {
265
+ FIRApp *firebaseApp = firebaseAppForName(appName);
266
+ FIRRemoteConfigSettings *remoteConfigSettings = [[FIRRemoteConfigSettings alloc] init];
267
+ remoteConfigSettings.minimumFetchInterval = configSettings.minimumFetchInterval();
268
+ remoteConfigSettings.fetchTimeout = configSettings.fetchTimeout();
237
269
 
238
270
  [FIRRemoteConfig remoteConfigWithApp:firebaseApp].configSettings = remoteConfigSettings;
239
271
  resolve([self resultWithVoidConstantsForApp:firebaseApp]);
240
272
  }
241
273
 
242
- RCT_EXPORT_METHOD(setDefaults
243
- : (FIRApp *)firebaseApp
244
- : (NSDictionary *)defaults
245
- : (RCTPromiseResolveBlock)resolve
246
- : (RCTPromiseRejectBlock)reject) {
274
+ - (void)setDefaults:(NSString *)appName
275
+ defaults:(NSDictionary *)defaults
276
+ resolve:(RCTPromiseResolveBlock)resolve
277
+ reject:(RCTPromiseRejectBlock)reject {
278
+ FIRApp *firebaseApp = firebaseAppForName(appName);
247
279
  [[FIRRemoteConfig remoteConfigWithApp:firebaseApp] setDefaults:defaults];
248
280
  resolve([self resultWithConstants:[NSNull null] firebaseApp:firebaseApp]);
249
281
  }
250
- RCT_EXPORT_METHOD(setDefaultsFromResource
251
- : (FIRApp *)firebaseApp
252
- : (NSString *)fileName
253
- : (RCTPromiseResolveBlock)resolve
254
- : (RCTPromiseRejectBlock)reject) {
255
- if ([[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"] != nil) {
256
- [[FIRRemoteConfig remoteConfigWithApp:firebaseApp] setDefaultsFromPlistFileName:fileName];
282
+
283
+ - (void)setDefaultsFromResource:(NSString *)appName
284
+ resourceName:(NSString *)resourceName
285
+ resolve:(RCTPromiseResolveBlock)resolve
286
+ reject:(RCTPromiseRejectBlock)reject {
287
+ FIRApp *firebaseApp = firebaseAppForName(appName);
288
+ if ([[NSBundle mainBundle] pathForResource:resourceName ofType:@"plist"] != nil) {
289
+ [[FIRRemoteConfig remoteConfigWithApp:firebaseApp] setDefaultsFromPlistFileName:resourceName];
257
290
  resolve([self resultWithConstants:[NSNull null] firebaseApp:firebaseApp]);
258
291
  } else {
259
292
  [RNFBSharedUtils rejectPromiseWithUserInfo:reject
@@ -264,7 +297,15 @@ RCT_EXPORT_METHOD(setDefaultsFromResource
264
297
  }
265
298
  }
266
299
 
267
- RCT_EXPORT_METHOD(onConfigUpdated : (FIRApp *)firebaseApp) {
300
+ - (void)reset:(NSString *)appName
301
+ resolve:(RCTPromiseResolveBlock)resolve
302
+ reject:(RCTPromiseRejectBlock)reject {
303
+ FIRApp *firebaseApp = firebaseAppForName(appName);
304
+ resolve([self resultWithVoidConstantsForApp:firebaseApp]);
305
+ }
306
+
307
+ - (void)onConfigUpdated:(NSString *)appName {
308
+ FIRApp *firebaseApp = firebaseAppForName(appName);
268
309
  if (![configUpdateHandlers valueForKey:firebaseApp.name]) {
269
310
  FIRConfigUpdateListenerRegistration *newRegistration =
270
311
  [[FIRRemoteConfig remoteConfigWithApp:firebaseApp]
@@ -274,7 +315,8 @@ RCT_EXPORT_METHOD(onConfigUpdated : (FIRApp *)firebaseApp) {
274
315
  NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
275
316
 
276
317
  [userInfo setValue:@"error" forKey:@"resultType"];
277
- [userInfo setValue:convertFIRRemoteConfigUpdateErrorToNSString(error.code)
318
+ [userInfo setValue:convertFIRRemoteConfigUpdateErrorToNSString(
319
+ (FIRRemoteConfigUpdateError)error.code)
278
320
  forKey:@"code"];
279
321
  [userInfo setValue:error.localizedDescription forKey:@"message"];
280
322
  [userInfo setValue:error.localizedDescription forKey:@"nativeErrorMessage"];
@@ -298,20 +340,22 @@ RCT_EXPORT_METHOD(onConfigUpdated : (FIRApp *)firebaseApp) {
298
340
  }
299
341
  }
300
342
 
301
- RCT_EXPORT_METHOD(removeConfigUpdateRegistration : (FIRApp *)firebaseApp) {
343
+ - (void)removeConfigUpdateRegistration:(NSString *)appName {
344
+ FIRApp *firebaseApp = firebaseAppForName(appName);
302
345
  if ([configUpdateHandlers valueForKey:firebaseApp.name]) {
303
346
  [[configUpdateHandlers objectForKey:firebaseApp.name] remove];
304
347
  [configUpdateHandlers removeObjectForKey:firebaseApp.name];
305
348
  }
306
349
  }
307
350
 
308
- RCT_EXPORT_METHOD(setCustomSignals
309
- : (FIRApp *)firebaseApp
310
- : (NSDictionary *)customSignals
311
- : (RCTPromiseResolveBlock)resolve
312
- : (RCTPromiseRejectBlock)reject) {
351
+ - (void)setCustomSignals:(NSString *)appName
352
+ customSignals:(NSDictionary *)customSignals
353
+ resolve:(RCTPromiseResolveBlock)resolve
354
+ reject:(RCTPromiseRejectBlock)reject {
355
+ FIRApp *firebaseApp = firebaseAppForName(appName);
356
+ NSDictionary *decodedCustomSignals = [RNFBSharedUtils decodeNullSentinels:customSignals];
313
357
  [[FIRRemoteConfig remoteConfigWithApp:firebaseApp]
314
- setCustomSignals:customSignals
358
+ setCustomSignals:decodedCustomSignals
315
359
  withCompletion:^(NSError *_Nullable error) {
316
360
  if (error != nil) {
317
361
  [RNFBSharedUtils rejectPromiseWithNSError:reject error:error];
@@ -7,7 +7,7 @@
7
7
  objects = {
8
8
 
9
9
  /* Begin PBXBuildFile section */
10
- 2744B98621F45429004F8E3F /* RNFBConfigModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 2744B98521F45429004F8E3F /* RNFBConfigModule.m */; };
10
+ 2744B98621F45429004F8E3F /* RNFBConfigModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2744B98521F45429004F8E3F /* RNFBConfigModule.mm */; };
11
11
  /* End PBXBuildFile section */
12
12
 
13
13
  /* Begin PBXCopyFilesBuildPhase section */
@@ -25,7 +25,7 @@
25
25
  /* Begin PBXFileReference section */
26
26
  2744B98221F45429004F8E3F /* libRNFBConfig.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNFBConfig.a; sourceTree = BUILT_PRODUCTS_DIR; };
27
27
  2744B98421F45429004F8E3F /* RNFBConfigModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNFBConfigModule.h; path = RNFBConfig/RNFBConfigModule.h; sourceTree = SOURCE_ROOT; };
28
- 2744B98521F45429004F8E3F /* RNFBConfigModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBConfigModule.m; path = RNFBConfig/RNFBConfigModule.m; sourceTree = SOURCE_ROOT; };
28
+ 2744B98521F45429004F8E3F /* RNFBConfigModule.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNFBConfigModule.mm; path = RNFBConfig/RNFBConfigModule.mm; sourceTree = SOURCE_ROOT; };
29
29
  /* End PBXFileReference section */
30
30
 
31
31
  /* Begin PBXFrameworksBuildPhase section */
@@ -53,7 +53,7 @@
53
53
  2744B9A121F48736004F8E3F /* converters */,
54
54
  2744B98C21F45C64004F8E3F /* common */,
55
55
  2744B98421F45429004F8E3F /* RNFBConfigModule.h */,
56
- 2744B98521F45429004F8E3F /* RNFBConfigModule.m */,
56
+ 2744B98521F45429004F8E3F /* RNFBConfigModule.mm */,
57
57
  );
58
58
  path = RNFBConfig;
59
59
  sourceTree = "<group>";
@@ -124,7 +124,7 @@
124
124
  isa = PBXSourcesBuildPhase;
125
125
  buildActionMask = 2147483647;
126
126
  files = (
127
- 2744B98621F45429004F8E3F /* RNFBConfigModule.m in Sources */,
127
+ 2744B98621F45429004F8E3F /* RNFBConfigModule.mm in Sources */,
128
128
  );
129
129
  runOnlyForDeploymentPostprocessing = 0;
130
130
  };
@@ -159,7 +159,7 @@
159
159
  );
160
160
  GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
161
161
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
162
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
162
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
163
163
  MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
164
164
  MTL_FAST_MATH = YES;
165
165
  OTHER_LDFLAGS = "-ObjC";
@@ -193,7 +193,7 @@
193
193
  GCC_C_LANGUAGE_STANDARD = gnu11;
194
194
  GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
195
195
  GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
196
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
196
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
197
197
  MTL_ENABLE_DEBUG_INFO = NO;
198
198
  MTL_FAST_MATH = YES;
199
199
  OTHER_LDFLAGS = "-ObjC";
@@ -254,7 +254,7 @@
254
254
  "$(SRCROOT)/../../../node_modules/react-native-firebase/ios/**",
255
255
  "$(SRCROOT)/../../../packages/app/ios/**",
256
256
  );
257
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
257
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
258
258
  LIBRARY_SEARCH_PATHS = "$(inherited)";
259
259
  MACH_O_TYPE = staticlib;
260
260
  OTHER_LDFLAGS = "$(inherited)";
@@ -312,7 +312,7 @@
312
312
  "$(SRCROOT)/../../../node_modules/react-native-firebase/ios/**",
313
313
  "$(SRCROOT)/../../../packages/app/ios/**",
314
314
  );
315
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
315
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
316
316
  LIBRARY_SEARCH_PATHS = "$(inherited)";
317
317
  MACH_O_TYPE = staticlib;
318
318
  ONLY_ACTIVE_ARCH = YES;
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ #if __has_include(<React-RCTAppDelegate/RCTDependencyProvider.h>)
12
+ #import <React-RCTAppDelegate/RCTDependencyProvider.h>
13
+ #elif __has_include(<React_RCTAppDelegate/RCTDependencyProvider.h>)
14
+ #import <React_RCTAppDelegate/RCTDependencyProvider.h>
15
+ #else
16
+ #import "RCTDependencyProvider.h"
17
+ #endif
18
+
19
+ NS_ASSUME_NONNULL_BEGIN
20
+
21
+ @interface RCTAppDependencyProvider : NSObject <RCTDependencyProvider>
22
+
23
+ @end
24
+
25
+ NS_ASSUME_NONNULL_END