cm-sdk-react-native-v3 3.8.0 → 3.10.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.
@@ -78,6 +78,23 @@ RCT_EXTERN_METHOD(importCMPInfo:(NSString *)cmpString
78
78
  RCT_EXTERN_METHOD(resetConsentManagementData:(RCTPromiseResolveBlock)resolve
79
79
  reject:(RCTPromiseRejectBlock)reject)
80
80
 
81
+ RCT_EXTERN_METHOD(configureAutomaticFirebaseConsentUpdates:(BOOL)enabled
82
+ resolve:(RCTPromiseResolveBlock)resolve
83
+ reject:(RCTPromiseRejectBlock)reject)
84
+
85
+ RCT_EXTERN_METHOD(setAutomaticFirebaseConsentUpdatesEnabled:(BOOL)enabled
86
+ resolve:(RCTPromiseResolveBlock)resolve
87
+ reject:(RCTPromiseRejectBlock)reject)
88
+
89
+ RCT_EXTERN_METHOD(isAutomaticFirebaseConsentUpdatesEnabled:(RCTPromiseResolveBlock)resolve
90
+ reject:(RCTPromiseRejectBlock)reject)
91
+
92
+ RCT_EXTERN_METHOD(updateFirebaseConsent:(RCTPromiseResolveBlock)resolve
93
+ reject:(RCTPromiseRejectBlock)reject)
94
+
95
+ RCT_EXTERN_METHOD(isFirebaseAnalyticsAvailable:(RCTPromiseResolveBlock)resolve
96
+ reject:(RCTPromiseRejectBlock)reject)
97
+
81
98
  // Event emitter support methods
82
99
  RCT_EXTERN_METHOD(addListener:(NSString *)eventName)
83
100
  RCT_EXTERN_METHOD(removeListeners:(double)count)
@@ -1,5 +1,6 @@
1
1
  import Foundation
2
2
  import UIKit
3
+ import WebKit
3
4
  import cm_sdk_ios_v3
4
5
  import React
5
6
 
@@ -77,6 +78,21 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
77
78
  // MARK: - CMPManagerDelegate methods
78
79
 
79
80
  @objc public func didReceiveConsent(consent: String, jsonObject: [String: Any]) {
81
+ print("[CMP iOS] didReceiveConsent called")
82
+ print("[CMP iOS] consent parameter length: \(consent.count)")
83
+ print("[CMP iOS] consent first 60 chars: \(String(consent.prefix(60)))")
84
+ if let firstChar = consent.first {
85
+ print("[CMP iOS] consent first char: '\(firstChar)' code: \(firstChar.asciiValue ?? 0)")
86
+ }
87
+ if let lastChar = consent.last {
88
+ print("[CMP iOS] consent last char: '\(lastChar)' code: \(lastChar.asciiValue ?? 0)")
89
+ }
90
+ print("[CMP iOS] jsonObject keys: \(jsonObject.keys)")
91
+ if let cmpString = jsonObject["cmpString"] as? String {
92
+ print("[CMP iOS] jsonObject.cmpString exists! Length: \(cmpString.count)")
93
+ print("[CMP iOS] Are consent param and jsonObject.cmpString same? \(consent == cmpString)")
94
+ }
95
+
80
96
  sendEventIfListening(name: "didReceiveConsent", body: [
81
97
  "consent": consent,
82
98
  "jsonObject": jsonObject
@@ -111,6 +127,7 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
111
127
  let cornerRadius = CGFloat(config["cornerRadius"] as? Double ?? 5)
112
128
  let respectsSafeArea = config["respectsSafeArea"] as? Bool ?? true
113
129
  let allowsOrientationChanges = config["allowsOrientationChanges"] as? Bool ?? true
130
+ let darkMode = config["darkMode"] as? Bool ?? false
114
131
 
115
132
  let position = self.mapPosition(config: config, respectsSafeArea: respectsSafeArea)
116
133
  let backgroundStyle = self.mapBackgroundStyle(config: config)
@@ -120,7 +137,8 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
120
137
  backgroundStyle: backgroundStyle,
121
138
  cornerRadius: cornerRadius,
122
139
  respectsSafeArea: respectsSafeArea,
123
- allowsOrientationChanges: allowsOrientationChanges
140
+ allowsOrientationChanges: allowsOrientationChanges,
141
+ darkMode: darkMode
124
142
  )
125
143
 
126
144
  self.cmpManager.setWebViewConfig(uiConfig)
@@ -240,10 +258,22 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
240
258
  let appName = config["appName"] as? String else {
241
259
  throw NSError(domain: "CmSdkReactNativeV3", code: 0, userInfo: [NSLocalizedDescriptionKey: "Invalid config parameters"])
242
260
  }
261
+ let jsonConfig = config["jsonConfig"] as? String
243
262
  let noHash = config["noHash"] as? Bool ?? false
263
+ let webViewConnectionTimeoutMillis = (config["webViewConnectionTimeoutMillis"] as? NSNumber)?.intValue ?? 3000
264
+ let forceRegulation = config["forceRegulation"] as? String
244
265
  print("ID: \(id) - Domain: \(domain)")
245
266
 
246
- let urlConfig = UrlConfig(id: id, domain: domain, language: language, appName: appName, jsonConfig: nil, noHash: noHash)
267
+ let urlConfig = UrlConfig(
268
+ id: id,
269
+ domain: domain,
270
+ language: language,
271
+ appName: appName,
272
+ jsonConfig: jsonConfig,
273
+ noHash: noHash,
274
+ webViewConnectionTimeoutMillis: webViewConnectionTimeoutMillis,
275
+ forceRegulation: forceRegulation
276
+ )
247
277
  print("urlConfig = \(urlConfig)")
248
278
  self.cmpManager.setUrlConfig(urlConfig)
249
279
  resolve(nil)
@@ -289,13 +319,13 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
289
319
  @objc(getStatusForPurpose:resolve:reject:)
290
320
  func getStatusForPurpose(_ purposeId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
291
321
  let status = cmpManager.getStatusForPurpose(id: purposeId)
292
- resolve(status.rawValue)
322
+ resolve(stringValue(for: status))
293
323
  }
294
324
 
295
325
  @objc(getStatusForVendor:resolve:reject:)
296
326
  func getStatusForVendor(_ vendorId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
297
327
  let status = cmpManager.getStatusForVendor(id: vendorId)
298
- resolve(status.rawValue)
328
+ resolve(stringValue(for: status))
299
329
  }
300
330
 
301
331
  @objc(getGoogleConsentModeStatus:reject:)
@@ -306,23 +336,29 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
306
336
 
307
337
  @objc(checkAndOpen:resolve:reject:)
308
338
  func checkAndOpen(_ jumpToSettings: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
309
- cmpManager.checkAndOpen(jumpToSettings: jumpToSettings) { error in
310
- if let error = error {
311
- reject("ERROR", "Failed to check and open: \(error.localizedDescription)", error)
312
- } else {
313
- resolve(true)
314
- }
339
+ runOnMainThread {
340
+ self.updatePresentingViewControllerIfNeeded()
341
+ self.cmpManager.checkAndOpen(jumpToSettings: jumpToSettings) { error in
342
+ if let error = error {
343
+ reject("ERROR", "Failed to check and open: \(error.localizedDescription)", error)
344
+ } else {
345
+ resolve(true)
346
+ }
347
+ }
315
348
  }
316
349
  }
317
350
 
318
351
  @objc(forceOpen:resolve:reject:)
319
352
  func forceOpen(_ jumpToSettings: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
320
- cmpManager.forceOpen(jumpToSettings: jumpToSettings) { error in
321
- if let error = error {
322
- reject("ERROR", "Failed to force open: \(error.localizedDescription)", error)
323
- } else {
324
- resolve(true)
325
- }
353
+ runOnMainThread {
354
+ self.updatePresentingViewControllerIfNeeded()
355
+ self.cmpManager.forceOpen(jumpToSettings: jumpToSettings) { error in
356
+ if let error = error {
357
+ reject("ERROR", "Failed to force open: \(error.localizedDescription)", error)
358
+ } else {
359
+ resolve(true)
360
+ }
361
+ }
326
362
  }
327
363
  }
328
364
 
@@ -334,29 +370,29 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
334
370
 
335
371
  @objc(acceptVendors:resolve:reject:)
336
372
  func acceptVendors(_ vendors: [String], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
337
- self.cmpManager.acceptVendors(vendors) { success in
338
- resolve(success)
339
- }
373
+ self.cmpManager.acceptVendors(vendors) { error in
374
+ self.resolveBooleanCompletion(error: error, successMessage: "Failed to accept vendors", resolve: resolve, reject: reject)
375
+ }
340
376
  }
341
377
 
342
378
  @objc(rejectVendors:resolve:reject:)
343
379
  func rejectVendors(_ vendors: [String], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
344
- self.cmpManager.rejectVendors(vendors) { success in
345
- resolve(success)
380
+ self.cmpManager.rejectVendors(vendors) { error in
381
+ self.resolveBooleanCompletion(error: error, successMessage: "Failed to reject vendors", resolve: resolve, reject: reject)
346
382
  }
347
383
  }
348
384
 
349
385
  @objc(acceptPurposes:updatePurpose:resolve:reject:)
350
386
  func acceptPurposes(_ purposes: [String], updatePurpose: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
351
- self.cmpManager.acceptPurposes(purposes, updatePurpose: updatePurpose) { success in
352
- resolve(success)
387
+ self.cmpManager.acceptPurposes(purposes, updatePurpose: updatePurpose) { error in
388
+ self.resolveBooleanCompletion(error: error, successMessage: "Failed to accept purposes", resolve: resolve, reject: reject)
353
389
  }
354
390
  }
355
391
 
356
392
  @objc(rejectPurposes:updateVendor:resolve:reject:)
357
393
  func rejectPurposes(_ purposes: [String], updateVendor: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
358
- self.cmpManager.rejectPurposes(purposes, updateVendor: updateVendor) { success in
359
- resolve(success)
394
+ self.cmpManager.rejectPurposes(purposes, updateVendor: updateVendor) { error in
395
+ self.resolveBooleanCompletion(error: error, successMessage: "Failed to reject purposes", resolve: resolve, reject: reject)
360
396
  }
361
397
  }
362
398
 
@@ -395,7 +431,43 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
395
431
 
396
432
  @objc(resetConsentManagementData:reject:)
397
433
  func resetConsentManagementData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
398
- self.cmpManager.resetConsentManagementData(completion: { success in resolve(success)})
434
+ self.cmpManager.resetConsentManagementData { error in
435
+ if let error = error {
436
+ reject("ERROR", "Failed to reset consent management data: \(error.localizedDescription)", error)
437
+ return
438
+ }
439
+
440
+ self.clearWebViewData {
441
+ resolve(true)
442
+ }
443
+ }
444
+ }
445
+
446
+ @objc(configureAutomaticFirebaseConsentUpdates:resolve:reject:)
447
+ func configureAutomaticFirebaseConsentUpdates(_ enabled: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
448
+ CMPManager.configureAutomaticFirebaseConsentUpdates(enabled)
449
+ resolve(nil)
450
+ }
451
+
452
+ @objc(setAutomaticFirebaseConsentUpdatesEnabled:resolve:reject:)
453
+ func setAutomaticFirebaseConsentUpdatesEnabled(_ enabled: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
454
+ cmpManager.setAutomaticFirebaseConsentUpdatesEnabled(enabled)
455
+ resolve(nil)
456
+ }
457
+
458
+ @objc(isAutomaticFirebaseConsentUpdatesEnabled:reject:)
459
+ func isAutomaticFirebaseConsentUpdatesEnabled(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
460
+ resolve(cmpManager.isAutomaticFirebaseConsentUpdatesEnabled())
461
+ }
462
+
463
+ @objc(updateFirebaseConsent:reject:)
464
+ func updateFirebaseConsent(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
465
+ resolve(cmpManager.updateFirebaseConsent())
466
+ }
467
+
468
+ @objc(isFirebaseAnalyticsAvailable:reject:)
469
+ func isFirebaseAnalyticsAvailable(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
470
+ resolve(cmpManager.isFirebaseAnalyticsAvailable())
399
471
  }
400
472
 
401
473
  // MARK: - Event emitter methods
@@ -409,4 +481,99 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
409
481
  override func removeListeners(_ count: Double) {
410
482
  super.removeListeners(Double(Int(count)))
411
483
  }
484
+
485
+ private func clearWebViewData(completion: @escaping () -> Void) {
486
+ let dataStore = WKWebsiteDataStore.default()
487
+ let types = WKWebsiteDataStore.allWebsiteDataTypes()
488
+ let domainsToClear = [
489
+ "consentmanager.net",
490
+ "delivery.consentmanager.net",
491
+ "a.delivery.consentmanager.net"
492
+ ]
493
+
494
+ DispatchQueue.main.async {
495
+ dataStore.fetchDataRecords(ofTypes: types) { records in
496
+ let toDelete = records.filter { record in
497
+ domainsToClear.contains { domain in
498
+ record.displayName.contains(domain)
499
+ }
500
+ }
501
+
502
+ let deleteAndComplete = {
503
+ self.clearCookiesForDomains(domainsToClear)
504
+ completion()
505
+ }
506
+
507
+ guard !toDelete.isEmpty else {
508
+ deleteAndComplete()
509
+ return
510
+ }
511
+
512
+ dataStore.removeData(ofTypes: types, for: toDelete) {
513
+ deleteAndComplete()
514
+ }
515
+ }
516
+ }
517
+ }
518
+
519
+ private func clearCookiesForDomains(_ domains: [String]) {
520
+ let cookieStorage = HTTPCookieStorage.shared
521
+ cookieStorage.cookies?.forEach { cookie in
522
+ if domains.contains(where: { domain in cookie.domain.contains(domain) }) {
523
+ cookieStorage.deleteCookie(cookie)
524
+ }
525
+ }
526
+ }
527
+
528
+ private func stringValue(for status: UniqueConsentStatus) -> String {
529
+ switch status {
530
+ case .choiceDoesntExist:
531
+ return "choiceDoesntExist"
532
+ case .granted:
533
+ return "granted"
534
+ case .denied:
535
+ return "denied"
536
+ @unknown default:
537
+ return "choiceDoesntExist"
538
+ }
539
+ }
540
+
541
+ private func resolveBooleanCompletion(
542
+ error: NSError?,
543
+ successMessage: String,
544
+ resolve: @escaping RCTPromiseResolveBlock,
545
+ reject: @escaping RCTPromiseRejectBlock
546
+ ) {
547
+ if let error = error {
548
+ reject("ERROR", "\(successMessage): \(error.localizedDescription)", error)
549
+ } else {
550
+ resolve(true)
551
+ }
552
+ }
553
+
554
+ private func updatePresentingViewControllerIfNeeded() {
555
+ if let viewController = currentPresentingViewController() {
556
+ cmpManager.setPresentingViewController(viewController)
557
+ }
558
+ }
559
+
560
+ private func currentPresentingViewController() -> UIViewController? {
561
+ if #available(iOS 13.0, *) {
562
+ let windowScene = UIApplication.shared.connectedScenes
563
+ .compactMap { $0 as? UIWindowScene }
564
+ .first { $0.activationState == .foregroundActive }
565
+ let rootViewController = windowScene?.windows.first { $0.isKeyWindow }?.rootViewController
566
+ return topMostViewController(from: rootViewController)
567
+ }
568
+
569
+ return topMostViewController(from: UIApplication.shared.keyWindow?.rootViewController)
570
+ }
571
+
572
+ private func topMostViewController(from rootViewController: UIViewController?) -> UIViewController? {
573
+ var current = rootViewController
574
+ while let presented = current?.presentedViewController {
575
+ current = presented
576
+ }
577
+ return current
578
+ }
412
579
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","WebViewPosition","exports","BackgroundStyleType","BlurEffectStyle","ATTStatus","CmSdkReactNativeV3","NativeModules","_default","default"],"sourceRoot":"../../src","sources":["NativeCmSdkReactNativeV3.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AAoBA;AAAA,IASYC,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAcfE,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAA,IAOnBC,eAAe,GAAAF,OAAA,CAAAE,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAMfC,SAAS,GAAAH,OAAA,CAAAG,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAsErB,MAAM;EAAEC;AAAmB,CAAC,GAAGC,0BAAa;AAAC,IAAAC,QAAA,GAAAN,OAAA,CAAAO,OAAA,GAE9BH,kBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","WebViewPosition","exports","BackgroundStyleType","BlurEffectStyle","ATTStatus","CmSdkReactNativeV3","NativeModules","_default","default"],"sourceRoot":"../../src","sources":["NativeCmSdkReactNativeV3.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AAoBA;AAAA,IAeYC,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAcfE,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAA,IAOnBC,eAAe,GAAAF,OAAA,CAAAE,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAMfC,SAAS,GAAAH,OAAA,CAAAG,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AA4FrB,MAAM;EAAEC;AAAmB,CAAC,GAAGC,0BAAa;AAAC,IAAAC,QAAA,GAAAN,OAAA,CAAAO,OAAA,GAE9BH,kBAAkB","ignoreList":[]}
@@ -28,13 +28,13 @@ Object.defineProperty(exports, "WebViewPosition", {
28
28
  return _NativeCmSdkReactNativeV.WebViewPosition;
29
29
  }
30
30
  });
31
- exports.setWebViewConfig = exports.setUrlConfig = exports.setATTStatus = exports.resetConsentManagementData = exports.rejectVendors = exports.rejectPurposes = exports.rejectAll = exports.isConsentRequired = exports.importCMPInfo = exports.getUserStatus = exports.getStatusForVendor = exports.getStatusForPurpose = exports.getGoogleConsentModeStatus = exports.forceOpen = exports.exportCMPInfo = exports.default = exports.checkAndOpen = exports.addShowConsentLayerListener = exports.addErrorListener = exports.addConsentListener = exports.addCloseConsentLayerListener = exports.addClickLinkListener = exports.addATTStatusChangeListener = exports.acceptVendors = exports.acceptPurposes = exports.acceptAll = void 0;
31
+ exports.updateThirdPartyConsent = exports.updateFirebaseConsent = exports.setWebViewConfig = exports.setUrlConfig = exports.setAutomaticFirebaseConsentUpdatesEnabled = exports.setAutomaticConsentUpdatesEnabled = exports.setATTStatus = exports.resetConsentManagementData = exports.rejectVendors = exports.rejectPurposes = exports.rejectAll = exports.isFirebaseAnalyticsAvailable = exports.isConsentRequired = exports.isAutomaticFirebaseConsentUpdatesEnabled = exports.importCMPInfo = exports.getUserStatus = exports.getStatusForVendor = exports.getStatusForPurpose = exports.getGoogleConsentModeStatus = exports.forceOpen = exports.exportCMPInfo = exports.default = exports.configureAutomaticFirebaseConsentUpdates = exports.checkAndOpen = exports.addShowConsentLayerListener = exports.addErrorListener = exports.addConsentListener = exports.addCloseConsentLayerListener = exports.addClickLinkListener = exports.addATTStatusChangeListener = exports.acceptVendors = exports.acceptPurposes = exports.acceptAll = void 0;
32
32
  var _reactNative = require("react-native");
33
33
  var _NativeCmSdkReactNativeV = _interopRequireWildcard(require("./NativeCmSdkReactNativeV3.js"));
34
34
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
35
35
  // Re-export enums/constants for consumers
36
36
 
37
- const LINKING_ERROR = `The package 'react-native-cm-sdk-react-native-v3' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
37
+ const LINKING_ERROR = `The package 'cm-sdk-react-native-v3' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
38
38
  ios: "- You have run 'pod install'\n",
39
39
  default: ''
40
40
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
@@ -44,6 +44,13 @@ const CmSdkReactNativeV3 = _NativeCmSdkReactNativeV.default ?? _reactNative.Nati
44
44
  }
45
45
  });
46
46
  const eventEmitter = new _reactNative.NativeEventEmitter(CmSdkReactNativeV3);
47
+ const getOptionalNativeMethod = methodName => {
48
+ const method = CmSdkReactNativeV3[methodName];
49
+ if (typeof method !== 'function') {
50
+ throw new Error(`[cm-sdk-react-native-v3] ${String(methodName)} is not available on ${_reactNative.Platform.OS}.`);
51
+ }
52
+ return method.bind(CmSdkReactNativeV3);
53
+ };
47
54
  const addConsentListener = callback => {
48
55
  return eventEmitter.addListener('didReceiveConsent', event => {
49
56
  callback(event.consent, event.jsonObject);
@@ -126,7 +133,7 @@ const normalizeWebViewConfig = config => {
126
133
  throw new Error('customRect is required when position is "custom"');
127
134
  }
128
135
  if (_reactNative.Platform.OS === 'android') {
129
- console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores customRect/position "custom"; it will fall back to full screen.');
136
+ console.warn('[cm-sdk-react-native-v3] Android native SDK uses width/height/gravity for custom positioning, so RN customRect falls back to full screen.');
130
137
  }
131
138
  }
132
139
  const backgroundStyle = (() => {
@@ -159,12 +166,11 @@ const normalizeWebViewConfig = config => {
159
166
  if (blurStyle !== _NativeCmSdkReactNativeV.BlurEffectStyle.Dark && blurStyle !== _NativeCmSdkReactNativeV.BlurEffectStyle.Light && blurStyle !== _NativeCmSdkReactNativeV.BlurEffectStyle.ExtraLight) {
160
167
  throw new Error(`Invalid blurEffectStyle: ${blurStyle}`);
161
168
  }
162
- if (_reactNative.Platform.OS === 'android') {
163
- console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores blur backgrounds; using dimmed.');
164
- }
165
169
  return {
166
170
  type,
167
- blurEffectStyle: blurStyle
171
+ blurEffectStyle: blurStyle,
172
+ fallbackColor: normalizeColor(config.backgroundStyle.fallbackColor ?? 'black'),
173
+ fallbackOpacity: config.backgroundStyle.fallbackOpacity ?? 0.5
168
174
  };
169
175
  }
170
176
  case _NativeCmSdkReactNativeV.BackgroundStyleType.None:
@@ -175,15 +181,14 @@ const normalizeWebViewConfig = config => {
175
181
  throw new Error(`Invalid backgroundStyle type: ${config.backgroundStyle.type}`);
176
182
  }
177
183
  })();
178
- if (_reactNative.Platform.OS === 'android' && config.backgroundStyle) {
179
- console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores backgroundStyle overrides; it always uses a dimmed background.');
180
- }
181
184
  return {
182
185
  position,
183
186
  customRect: config.customRect,
184
187
  cornerRadius: config.cornerRadius ?? 5,
185
188
  respectsSafeArea: config.respectsSafeArea ?? true,
186
189
  allowsOrientationChanges: config.allowsOrientationChanges ?? true,
190
+ darkMode: config.darkMode ?? false,
191
+ navigationBarColor: normalizeColor(config.navigationBarColor),
187
192
  backgroundStyle
188
193
  };
189
194
  };
@@ -242,9 +247,37 @@ exports.rejectAll = rejectAll;
242
247
  const acceptAll = () => {
243
248
  return CmSdkReactNativeV3.acceptAll();
244
249
  };
250
+ exports.acceptAll = acceptAll;
251
+ const setAutomaticConsentUpdatesEnabled = enabled => {
252
+ return getOptionalNativeMethod('setAutomaticConsentUpdatesEnabled')(enabled);
253
+ };
254
+ exports.setAutomaticConsentUpdatesEnabled = setAutomaticConsentUpdatesEnabled;
255
+ const updateThirdPartyConsent = () => {
256
+ return getOptionalNativeMethod('updateThirdPartyConsent')();
257
+ };
258
+ exports.updateThirdPartyConsent = updateThirdPartyConsent;
259
+ const configureAutomaticFirebaseConsentUpdates = enabled => {
260
+ return getOptionalNativeMethod('configureAutomaticFirebaseConsentUpdates')(enabled);
261
+ };
262
+ exports.configureAutomaticFirebaseConsentUpdates = configureAutomaticFirebaseConsentUpdates;
263
+ const setAutomaticFirebaseConsentUpdatesEnabled = enabled => {
264
+ return getOptionalNativeMethod('setAutomaticFirebaseConsentUpdatesEnabled')(enabled);
265
+ };
266
+ exports.setAutomaticFirebaseConsentUpdatesEnabled = setAutomaticFirebaseConsentUpdatesEnabled;
267
+ const isAutomaticFirebaseConsentUpdatesEnabled = () => {
268
+ return getOptionalNativeMethod('isAutomaticFirebaseConsentUpdatesEnabled')();
269
+ };
270
+ exports.isAutomaticFirebaseConsentUpdatesEnabled = isAutomaticFirebaseConsentUpdatesEnabled;
271
+ const updateFirebaseConsent = () => {
272
+ return getOptionalNativeMethod('updateFirebaseConsent')();
273
+ };
274
+ exports.updateFirebaseConsent = updateFirebaseConsent;
275
+ const isFirebaseAnalyticsAvailable = () => {
276
+ return getOptionalNativeMethod('isFirebaseAnalyticsAvailable')();
277
+ };
245
278
 
246
279
  // Re-export types for consumer convenience
247
- exports.acceptAll = acceptAll;
280
+ exports.isFirebaseAnalyticsAvailable = isFirebaseAnalyticsAvailable;
248
281
  /**
249
282
  * Helper factory to build strongly-typed background styles.
250
283
  */
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeCmSdkReactNativeV","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LINKING_ERROR","Platform","select","ios","CmSdkReactNativeV3","NativeCmSdkReactNativeV3","NativeModules","Proxy","Error","eventEmitter","NativeEventEmitter","addConsentListener","callback","addListener","event","consent","jsonObject","exports","addShowConsentLayerListener","addCloseConsentLayerListener","addErrorListener","error","addClickLinkListener","url","addATTStatusChangeListener","setUrlConfig","config","setWebViewConfig","normalized","normalizeWebViewConfig","setATTStatus","status","allowed","Set","ATTStatus","NotDetermined","Restricted","Denied","Authorized","checkAndOpen","jumpToSettings","forceOpen","getUserStatus","isConsentRequired","position","WebViewPosition","FullScreen","allowedPositions","HalfScreenTop","HalfScreenBottom","Custom","includes","customRect","OS","console","warn","backgroundStyle","type","BackgroundStyleType","Dimmed","color","normalizeColor","opacity","Color","Blur","blurStyle","blurEffectStyle","BlurEffectStyle","Dark","Light","ExtraLight","None","cornerRadius","respectsSafeArea","allowsOrientationChanges","undefined","processed","processColor","getStatusForPurpose","purposeId","getStatusForVendor","vendorId","getGoogleConsentModeStatus","exportCMPInfo","importCMPInfo","cmpString","resetConsentManagementData","acceptVendors","vendors","rejectVendors","acceptPurposes","purposes","updatePurpose","rejectPurposes","updateVendor","rejectAll","acceptAll","BackgroundStyle","dimmed","blur","none","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeCmSdkReactNativeV","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LINKING_ERROR","Platform","select","ios","CmSdkReactNativeV3","NativeCmSdkReactNativeV3","NativeModules","Proxy","Error","eventEmitter","NativeEventEmitter","getOptionalNativeMethod","methodName","method","String","OS","bind","addConsentListener","callback","addListener","event","consent","jsonObject","exports","addShowConsentLayerListener","addCloseConsentLayerListener","addErrorListener","error","addClickLinkListener","url","addATTStatusChangeListener","setUrlConfig","config","setWebViewConfig","normalized","normalizeWebViewConfig","setATTStatus","status","allowed","Set","ATTStatus","NotDetermined","Restricted","Denied","Authorized","checkAndOpen","jumpToSettings","forceOpen","getUserStatus","isConsentRequired","position","WebViewPosition","FullScreen","allowedPositions","HalfScreenTop","HalfScreenBottom","Custom","includes","customRect","console","warn","backgroundStyle","type","BackgroundStyleType","Dimmed","color","normalizeColor","opacity","Color","Blur","blurStyle","blurEffectStyle","BlurEffectStyle","Dark","Light","ExtraLight","fallbackColor","fallbackOpacity","None","cornerRadius","respectsSafeArea","allowsOrientationChanges","darkMode","navigationBarColor","undefined","processed","processColor","getStatusForPurpose","purposeId","getStatusForVendor","vendorId","getGoogleConsentModeStatus","exportCMPInfo","importCMPInfo","cmpString","resetConsentManagementData","acceptVendors","vendors","rejectVendors","acceptPurposes","purposes","updatePurpose","rejectPurposes","updateVendor","rejectAll","acceptAll","setAutomaticConsentUpdatesEnabled","enabled","updateThirdPartyConsent","configureAutomaticFirebaseConsentUpdates","setAutomaticFirebaseConsentUpdatesEnabled","isAutomaticFirebaseConsentUpdatesEnabled","updateFirebaseConsent","isFirebaseAnalyticsAvailable","BackgroundStyle","dimmed","blur","none","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","WebViewPosition","BackgroundStyleType","BlurEffectStyle","ATTStatus","CmSdkReactNativeV3"],"sourceRoot":"../../src","sources":["NativeCmSdkReactNativeV3.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;;AAE5C;;AAoBA;;AASA,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAc3B,WAAYC,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAO/B,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAsErB,MAAM;EAAEC;AAAmB,CAAC,GAAGL,aAAa;AAE5C,eAAeK,kBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","WebViewPosition","BackgroundStyleType","BlurEffectStyle","ATTStatus","CmSdkReactNativeV3"],"sourceRoot":"../../src","sources":["NativeCmSdkReactNativeV3.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;;AAE5C;;AAoBA;;AAeA,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAc3B,WAAYC,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAO/B,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AA4FrB,MAAM;EAAEC;AAAmB,CAAC,GAAGL,aAAa;AAE5C,eAAeK,kBAAkB","ignoreList":[]}
@@ -5,7 +5,7 @@ import NativeCmSdkReactNativeV3, { WebViewPosition, BackgroundStyleType, BlurEff
5
5
 
6
6
  // Re-export enums/constants for consumers
7
7
  export { WebViewPosition, BackgroundStyleType, BlurEffectStyle, ATTStatus };
8
- const LINKING_ERROR = `The package 'react-native-cm-sdk-react-native-v3' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
8
+ const LINKING_ERROR = `The package 'cm-sdk-react-native-v3' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
9
9
  ios: "- You have run 'pod install'\n",
10
10
  default: ''
11
11
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
@@ -15,6 +15,13 @@ const CmSdkReactNativeV3 = NativeCmSdkReactNativeV3 ?? NativeModules.CmSdkReactN
15
15
  }
16
16
  });
17
17
  const eventEmitter = new NativeEventEmitter(CmSdkReactNativeV3);
18
+ const getOptionalNativeMethod = methodName => {
19
+ const method = CmSdkReactNativeV3[methodName];
20
+ if (typeof method !== 'function') {
21
+ throw new Error(`[cm-sdk-react-native-v3] ${String(methodName)} is not available on ${Platform.OS}.`);
22
+ }
23
+ return method.bind(CmSdkReactNativeV3);
24
+ };
18
25
  export const addConsentListener = callback => {
19
26
  return eventEmitter.addListener('didReceiveConsent', event => {
20
27
  callback(event.consent, event.jsonObject);
@@ -84,7 +91,7 @@ const normalizeWebViewConfig = config => {
84
91
  throw new Error('customRect is required when position is "custom"');
85
92
  }
86
93
  if (Platform.OS === 'android') {
87
- console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores customRect/position "custom"; it will fall back to full screen.');
94
+ console.warn('[cm-sdk-react-native-v3] Android native SDK uses width/height/gravity for custom positioning, so RN customRect falls back to full screen.');
88
95
  }
89
96
  }
90
97
  const backgroundStyle = (() => {
@@ -117,12 +124,11 @@ const normalizeWebViewConfig = config => {
117
124
  if (blurStyle !== BlurEffectStyle.Dark && blurStyle !== BlurEffectStyle.Light && blurStyle !== BlurEffectStyle.ExtraLight) {
118
125
  throw new Error(`Invalid blurEffectStyle: ${blurStyle}`);
119
126
  }
120
- if (Platform.OS === 'android') {
121
- console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores blur backgrounds; using dimmed.');
122
- }
123
127
  return {
124
128
  type,
125
- blurEffectStyle: blurStyle
129
+ blurEffectStyle: blurStyle,
130
+ fallbackColor: normalizeColor(config.backgroundStyle.fallbackColor ?? 'black'),
131
+ fallbackOpacity: config.backgroundStyle.fallbackOpacity ?? 0.5
126
132
  };
127
133
  }
128
134
  case BackgroundStyleType.None:
@@ -133,15 +139,14 @@ const normalizeWebViewConfig = config => {
133
139
  throw new Error(`Invalid backgroundStyle type: ${config.backgroundStyle.type}`);
134
140
  }
135
141
  })();
136
- if (Platform.OS === 'android' && config.backgroundStyle) {
137
- console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores backgroundStyle overrides; it always uses a dimmed background.');
138
- }
139
142
  return {
140
143
  position,
141
144
  customRect: config.customRect,
142
145
  cornerRadius: config.cornerRadius ?? 5,
143
146
  respectsSafeArea: config.respectsSafeArea ?? true,
144
147
  allowsOrientationChanges: config.allowsOrientationChanges ?? true,
148
+ darkMode: config.darkMode ?? false,
149
+ navigationBarColor: normalizeColor(config.navigationBarColor),
145
150
  backgroundStyle
146
151
  };
147
152
  };
@@ -189,6 +194,27 @@ export const rejectAll = () => {
189
194
  export const acceptAll = () => {
190
195
  return CmSdkReactNativeV3.acceptAll();
191
196
  };
197
+ export const setAutomaticConsentUpdatesEnabled = enabled => {
198
+ return getOptionalNativeMethod('setAutomaticConsentUpdatesEnabled')(enabled);
199
+ };
200
+ export const updateThirdPartyConsent = () => {
201
+ return getOptionalNativeMethod('updateThirdPartyConsent')();
202
+ };
203
+ export const configureAutomaticFirebaseConsentUpdates = enabled => {
204
+ return getOptionalNativeMethod('configureAutomaticFirebaseConsentUpdates')(enabled);
205
+ };
206
+ export const setAutomaticFirebaseConsentUpdatesEnabled = enabled => {
207
+ return getOptionalNativeMethod('setAutomaticFirebaseConsentUpdatesEnabled')(enabled);
208
+ };
209
+ export const isAutomaticFirebaseConsentUpdatesEnabled = () => {
210
+ return getOptionalNativeMethod('isAutomaticFirebaseConsentUpdatesEnabled')();
211
+ };
212
+ export const updateFirebaseConsent = () => {
213
+ return getOptionalNativeMethod('updateFirebaseConsent')();
214
+ };
215
+ export const isFirebaseAnalyticsAvailable = () => {
216
+ return getOptionalNativeMethod('isFirebaseAnalyticsAvailable')();
217
+ };
192
218
 
193
219
  // Re-export types for consumer convenience
194
220