@usercentrics/react-native-sdk 2.25.1 → 2.26.1

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 (54) hide show
  1. package/android/build-legacy.gradle +1 -1
  2. package/android/build.gradle.kts +1 -1
  3. package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt +102 -2
  4. package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt +19 -1
  5. package/android/src/main/java/com/usercentrics/reactnative/extensions/BannerSettingsExtensions.kt +2 -1
  6. package/android/src/main/java/com/usercentrics/reactnative/extensions/GppDataExtensions.kt +83 -0
  7. package/android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt +2 -1
  8. package/android/src/main/java/com/usercentrics/reactnative/extensions/UsercentricsCMPDataExtensions.kt +44 -2
  9. package/android/src/test/java/com/usercentrics/reactnative/extensions/NullabilityTest.kt +189 -0
  10. package/ios/Extensions/GppData+Dict.swift +45 -0
  11. package/ios/Extensions/GppSectionChangePayload+Dict.swift +10 -0
  12. package/ios/Extensions/UIImage+UsercentricsLogoDict.swift +31 -6
  13. package/ios/Extensions/UsercentricsCMPData+Dict.swift +6 -2
  14. package/ios/Manager/UsercentricsManager.swift +28 -3
  15. package/ios/RNUsercentricsModule.mm +11 -7
  16. package/ios/RNUsercentricsModule.swift +56 -15
  17. package/ios/RNUsercentricsModuleSpec.h +13 -0
  18. package/lib/NativeUsercentrics.d.ts +8 -2
  19. package/lib/NativeUsercentrics.js.map +1 -1
  20. package/lib/Usercentrics.d.ts +8 -2
  21. package/lib/Usercentrics.js +23 -3
  22. package/lib/Usercentrics.js.map +1 -1
  23. package/lib/fabric/NativeUsercentricsModule.d.ts +7 -1
  24. package/lib/fabric/NativeUsercentricsModule.js.map +1 -1
  25. package/lib/models/CCPASettings.d.ts +3 -1
  26. package/lib/models/CCPASettings.js +3 -1
  27. package/lib/models/CCPASettings.js.map +1 -1
  28. package/lib/models/GppData.d.ts +6 -0
  29. package/lib/models/GppData.js +8 -0
  30. package/lib/models/GppData.js.map +1 -0
  31. package/lib/models/GppSectionChangePayload.d.ts +4 -0
  32. package/lib/models/GppSectionChangePayload.js +6 -0
  33. package/lib/models/GppSectionChangePayload.js.map +1 -0
  34. package/lib/models/TCF2Settings.d.ts +2 -2
  35. package/lib/models/TCF2Settings.js +2 -2
  36. package/lib/models/TCF2Settings.js.map +1 -1
  37. package/lib/models/UsercentricsSettings.d.ts +3 -1
  38. package/lib/models/UsercentricsSettings.js +3 -1
  39. package/lib/models/UsercentricsSettings.js.map +1 -1
  40. package/lib/models/index.d.ts +2 -0
  41. package/lib/models/index.js +2 -0
  42. package/lib/models/index.js.map +1 -1
  43. package/package.json +2 -2
  44. package/src/NativeUsercentrics.ts +10 -1
  45. package/src/Usercentrics.tsx +31 -3
  46. package/src/__tests__/index.test.ts +66 -1
  47. package/src/__tests__/mocks.ts +17 -1
  48. package/src/fabric/NativeUsercentricsModule.ts +8 -1
  49. package/src/models/CCPASettings.tsx +7 -1
  50. package/src/models/GppData.tsx +15 -0
  51. package/src/models/GppSectionChangePayload.tsx +7 -0
  52. package/src/models/TCF2Settings.tsx +3 -3
  53. package/src/models/UsercentricsSettings.tsx +6 -0
  54. package/src/models/index.tsx +2 -0
@@ -3,13 +3,38 @@ import UIKit
3
3
 
4
4
  extension UIImage {
5
5
  convenience init?(from dictionary: NSDictionary?) {
6
- guard
7
- let dictionary = dictionary,
8
- let logoName = dictionary["logoName"] as? String
9
- else {
10
- return nil
6
+ guard let dictionary = dictionary else { return nil }
7
+
8
+ if let logoPath = dictionary["logoPath"] as? String, !logoPath.isEmpty,
9
+ let image = Self.image(fromLogoPath: logoPath),
10
+ let cgImage = image.cgImage {
11
+ self.init(cgImage: cgImage, scale: image.scale, orientation: image.imageOrientation)
12
+ return
13
+ }
14
+
15
+ if let logoName = dictionary["logoName"] as? String, !logoName.isEmpty {
16
+ self.init(named: logoName)
17
+ return
11
18
  }
12
19
 
13
- self.init(named: logoName)
20
+ return nil
21
+ }
22
+
23
+ private static func image(fromLogoPath logoPath: String) -> UIImage? {
24
+ if logoPath.hasPrefix("file://") {
25
+ let path = logoPath.replacingOccurrences(of: "file://", with: "")
26
+ if let image = UIImage(contentsOfFile: path) { return image }
27
+ }
28
+ else if logoPath.hasPrefix("/") {
29
+ if let image = UIImage(contentsOfFile: logoPath) { return image }
30
+ }
31
+ else if logoPath.hasPrefix("http://") || logoPath.hasPrefix("https://"),
32
+ let url = URL(string: logoPath),
33
+ let data = try? Data(contentsOf: url),
34
+ let image = UIImage(data: data) {
35
+ return image
36
+ }
37
+ if let image = UIImage(named: logoPath) { return image }
38
+ return nil
14
39
  }
15
40
  }
@@ -45,6 +45,8 @@ extension UsercentricsSettings {
45
45
  "publishedApps": (self.publishedApps?.map { $0.toDictionary() } ?? nil) as Any,
46
46
  "renewConsentsTimestamp": self.renewConsentsTimestamp as Any,
47
47
  "consentWebhook": self.consentWebhook as Any,
48
+ "gppSignalingEnabled": self.gppSignalingEnabled,
49
+ "gpcSignalHonoured": self.gpcSignalHonoured,
48
50
  ]
49
51
  }
50
52
  }
@@ -164,6 +166,8 @@ extension CCPASettings {
164
166
  "secondLayerDescription" : self.secondLayerDescription as Any,
165
167
  "secondLayerHideLanguageSwitch" : self.secondLayerHideLanguageSwitch,
166
168
  "btnMoreInfo" : self.btnMoreInfo as Any,
169
+ "mspaCoveredTransaction" : self.mspaCoveredTransaction,
170
+ "mspaMode" : self.mspaMode?.ordinal as Any,
167
171
  ]
168
172
  }
169
173
  }
@@ -208,7 +212,6 @@ extension TCF2Settings {
208
212
  "disabledSpecialFeatures" : self.disabledSpecialFeatures,
209
213
  "firstLayerShowDescriptions" : self.firstLayerShowDescriptions,
210
214
  "hideNonIabOnFirstLayer" : self.hideNonIabOnFirstLayer,
211
- "resurfacePeriodEnded" : self.resurfacePeriodEnded,
212
215
  "resurfacePurposeChanged" : self.resurfacePurposeChanged,
213
216
  "resurfaceVendorAdded" : self.resurfaceVendorAdded,
214
217
  "firstLayerDescription" : self.firstLayerDescription as Any,
@@ -231,7 +234,8 @@ extension TCF2Settings {
231
234
  "scope": self.scope.ordinal,
232
235
  "changedPurposes": self.changedPurposes?.toDictionary() as Any,
233
236
  "acmV2Enabled": self.acmV2Enabled,
234
- "selectedATPIds": self.selectedATPIds
237
+ "selectedATPIds": self.selectedATPIds,
238
+ "resurfacePeriod": self.resurfacePeriod,
235
239
  ]
236
240
  }
237
241
  }
@@ -19,16 +19,21 @@ public protocol UsercentricsManager {
19
19
  func getCMPData() -> UsercentricsCMPData
20
20
  func getUserSessionData() -> String
21
21
  func getUSPData() -> CCPAData
22
+ func getGPPData() -> GppData
23
+ func getGPPString() -> String?
24
+ func setGPPConsent(sectionName: String, fieldName: String, value: Any)
22
25
  func getTCFData(callback: @escaping (TCFData) -> Void)
23
26
  func getABTestingVariant() -> String?
27
+ func getDpsMetadata(templateId: String) -> [String: Any]?
24
28
  func getAdditionalConsentModeData() -> AdditionalConsentModeData
29
+ func onGppSectionChange(callback: @escaping (GppSectionChangePayload) -> Void) -> UsercentricsDisposableEvent<GppSectionChangePayload>
25
30
 
26
31
  func changeLanguage(language: String, onSuccess: @escaping (() -> Void), onFailure: @escaping ((Error) -> Void))
27
32
 
28
33
  func acceptAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent]
29
34
  func acceptAll(consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent]
30
35
 
31
- func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent]
36
+ func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?, unsavedVendorLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent]
32
37
  func denyAll(consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent]
33
38
 
34
39
  func saveDecisionsForTCF(tcfDecisions: TCFUserDecisions,
@@ -92,10 +97,30 @@ final class UsercentricsManagerImplementation: UsercentricsManager {
92
97
  return UsercentricsCore.shared.getUSPData()
93
98
  }
94
99
 
100
+ func getGPPData() -> GppData {
101
+ return UsercentricsCore.shared.getGPPData()
102
+ }
103
+
104
+ func getGPPString() -> String? {
105
+ return UsercentricsCore.shared.getGPPString()
106
+ }
107
+
108
+ func setGPPConsent(sectionName: String, fieldName: String, value: Any) {
109
+ UsercentricsCore.shared.setGPPConsent(sectionName: sectionName, fieldName: fieldName, value: value)
110
+ }
111
+
112
+ func onGppSectionChange(callback: @escaping (GppSectionChangePayload) -> Void) -> UsercentricsDisposableEvent<GppSectionChangePayload> {
113
+ return UsercentricsEvent.shared.onGppSectionChange(callback: callback)
114
+ }
115
+
95
116
  func getTCFData(callback: @escaping (TCFData) -> Void) {
96
117
  UsercentricsCore.shared.getTCFData(callback: callback)
97
118
  }
98
119
 
120
+ func getDpsMetadata(templateId: String) -> [String: Any]? {
121
+ return UsercentricsCore.shared.getDpsMetadata(templateId: templateId)
122
+ }
123
+
99
124
  func getAdditionalConsentModeData() -> AdditionalConsentModeData {
100
125
  return UsercentricsCore.shared.getAdditionalConsentModeData()
101
126
  }
@@ -112,8 +137,8 @@ final class UsercentricsManagerImplementation: UsercentricsManager {
112
137
  return UsercentricsCore.shared.acceptAll(consentType: consentType)
113
138
  }
114
139
 
115
- func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent] {
116
- return UsercentricsCore.shared.denyAllForTCF(fromLayer: fromLayer, consentType: consentType, unsavedPurposeLIDecisions: unsavedPurposeLIDecisions)
140
+ func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?, unsavedVendorLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent] {
141
+ return UsercentricsCore.shared.denyAllForTCF(fromLayer: fromLayer, consentType: consentType, unsavedPurposeLIDecisions: unsavedPurposeLIDecisions, unsavedVendorLIDecisions: unsavedVendorLIDecisions)
117
142
  }
118
143
 
119
144
  func denyAll(consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent] {
@@ -10,10 +10,6 @@
10
10
  @interface RCT_EXTERN_MODULE(RNUsercentricsModule, NSObject)
11
11
  RCT_EXTERN_METHOD(configure:(NSDictionary *)dict)
12
12
 
13
- RCT_EXTERN_METHOD(showCMP:(NSDictionary *)dict
14
- resolve:(RCTPromiseResolveBlock)resolve
15
- reject:(RCTPromiseRejectBlock)reject)
16
-
17
13
  RCT_EXTERN_METHOD(showFirstLayer:(NSDictionary *)dict
18
14
  resolve:(RCTPromiseResolveBlock)resolve
19
15
  reject:(RCTPromiseRejectBlock)reject)
@@ -29,9 +25,6 @@ RCT_EXTERN_METHOD(restoreUserSession:(NSString *)controllerId
29
25
  RCT_EXTERN_METHOD(isReady:(RCTPromiseResolveBlock)resolve
30
26
  reject:(RCTPromiseRejectBlock)reject)
31
27
 
32
- RCT_EXTERN_METHOD(getTCFString:(RCTPromiseResolveBlock)resolve
33
- reject:(RCTPromiseRejectBlock)reject)
34
-
35
28
  RCT_EXTERN_METHOD(getControllerId:(RCTPromiseResolveBlock)resolve
36
29
  reject:(RCTPromiseRejectBlock)reject)
37
30
 
@@ -50,6 +43,12 @@ RCT_EXTERN_METHOD(getUserSessionData:(RCTPromiseResolveBlock)resolve
50
43
  RCT_EXTERN_METHOD(getUSPData:(RCTPromiseResolveBlock)resolve
51
44
  reject:(RCTPromiseRejectBlock)reject)
52
45
 
46
+ RCT_EXTERN_METHOD(getGPPData:(RCTPromiseResolveBlock)resolve
47
+ reject:(RCTPromiseRejectBlock)reject)
48
+
49
+ RCT_EXTERN_METHOD(getGPPString:(RCTPromiseResolveBlock)resolve
50
+ reject:(RCTPromiseRejectBlock)reject)
51
+
53
52
  RCT_EXTERN_METHOD(getTCFData:(RCTPromiseResolveBlock)resolve
54
53
  reject:(RCTPromiseRejectBlock)reject)
55
54
 
@@ -72,6 +71,7 @@ RCT_EXTERN_METHOD(acceptAll:(double)consentType
72
71
  RCT_EXTERN_METHOD(denyAllForTCF:(double)fromLayer
73
72
  consentType:(double)consentType
74
73
  unsavedPurposeLIDecisions:(NSArray)unsavedPurposeLIDecisions
74
+ unsavedVendorLIDecisions:(NSArray)unsavedVendorLIDecisions
75
75
  resolve:(RCTPromiseResolveBlock)resolve
76
76
  reject:(RCTPromiseRejectBlock)reject)
77
77
 
@@ -100,6 +100,10 @@ RCT_EXTERN_METHOD(setCMPId:(double)id)
100
100
 
101
101
  RCT_EXTERN_METHOD(setABTestingVariant:(NSString *)variant)
102
102
 
103
+ RCT_EXTERN_METHOD(setGPPConsent:(NSString *)sectionName
104
+ fieldName:(NSString *)fieldName
105
+ value:(NSDictionary *)value)
106
+
103
107
  RCT_EXTERN_METHOD(track:(double)event)
104
108
 
105
109
  RCT_EXTERN_METHOD(clearUserSession:(RCTPromiseResolveBlock)resolve
@@ -17,18 +17,35 @@ import RNUsercentricsModuleSpec
17
17
  #endif
18
18
 
19
19
  @objc(RNUsercentricsModule)
20
- class RNUsercentricsModule: NSObject {
20
+ class RNUsercentricsModule: RCTEventEmitter {
21
21
 
22
22
  var usercentricsManager: UsercentricsManager = UsercentricsManagerImplementation()
23
23
  var queue: DispatchQueueManager = DispatchQueue.main
24
+ private var gppSectionChangeSubscription: UsercentricsDisposableEvent<GppSectionChangePayload>?
24
25
 
25
- @objc static func moduleName() -> String! {
26
+ @objc override static func moduleName() -> String! {
26
27
  return "RNUsercentricsModule"
27
28
  }
28
29
 
29
- @objc static func requiresMainQueueSetup() -> Bool {
30
+ @objc override static func requiresMainQueueSetup() -> Bool {
30
31
  return true
31
32
  }
33
+
34
+ override func supportedEvents() -> [String]! {
35
+ return [Self.onGppSectionChangeEvent]
36
+ }
37
+
38
+ override func startObserving() {
39
+ guard gppSectionChangeSubscription == nil else { return }
40
+ gppSectionChangeSubscription = usercentricsManager.onGppSectionChange { [weak self] payload in
41
+ self?.sendEvent(withName: Self.onGppSectionChangeEvent, body: payload.toDictionary())
42
+ }
43
+ }
44
+
45
+ override func stopObserving() {
46
+ gppSectionChangeSubscription?.dispose()
47
+ gppSectionChangeSubscription = nil
48
+ }
32
49
 
33
50
  @objc func configure(_ dict: NSDictionary) -> Void {
34
51
  queue.async { [weak self] in
@@ -125,10 +142,28 @@ class RNUsercentricsModule: NSObject {
125
142
  resolve(usercentricsManager.getUSPData().toDictionary())
126
143
  }
127
144
 
145
+ @objc func getGPPData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
146
+ resolve(usercentricsManager.getGPPData().toDictionary())
147
+ }
148
+
149
+ @objc func getGPPString(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
150
+ resolve(usercentricsManager.getGPPString())
151
+ }
152
+
153
+ @objc func setGPPConsent(_ sectionName: String, fieldName: String, value: NSDictionary) -> Void {
154
+ let unwrapped = value["value"] ?? NSNull()
155
+ usercentricsManager.setGPPConsent(sectionName: sectionName, fieldName: fieldName, value: unwrapped)
156
+ }
157
+
128
158
  @objc func getABTestingVariant(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
129
159
  resolve(usercentricsManager.getABTestingVariant())
130
160
  }
131
161
 
162
+ @objc func getDpsMetadata(_ templateId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
163
+ let metadata = usercentricsManager.getDpsMetadata(templateId: templateId)
164
+ resolve(metadata as NSDictionary?)
165
+ }
166
+
132
167
  @objc func getAdditionalConsentModeData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
133
168
  resolve(usercentricsManager.getAdditionalConsentModeData().toDictionary())
134
169
  }
@@ -160,20 +195,26 @@ class RNUsercentricsModule: NSObject {
160
195
  @objc func denyAllForTCF(_ fromLayer: Double,
161
196
  consentType: Double,
162
197
  unsavedPurposeLIDecisions: [NSDictionary],
198
+ unsavedVendorLIDecisions: [NSDictionary],
163
199
  resolve: @escaping RCTPromiseResolveBlock,
164
200
  reject: @escaping RCTPromiseRejectBlock) -> Void {
165
- var decisions: [KotlinInt: KotlinBoolean]? = nil
166
- if !unsavedPurposeLIDecisions.isEmpty {
167
- decisions = [:]
168
- for dict in unsavedPurposeLIDecisions {
169
- if let id = dict["id"] as? Int,
170
- let consent = dict["legitimateInterestConsent"] as? Bool {
171
- decisions?[KotlinInt(int: Int32(id))] = KotlinBoolean(bool: consent)
172
- }
201
+ let services = usercentricsManager.denyAllForTCF(
202
+ fromLayer: .initialize(from: Int(fromLayer)),
203
+ consentType: .initialize(from: Int(consentType)),
204
+ unsavedPurposeLIDecisions: extractLIDecisionsMap(unsavedPurposeLIDecisions),
205
+ unsavedVendorLIDecisions: extractLIDecisionsMap(unsavedVendorLIDecisions)
206
+ )
207
+ resolve(services.toListOfDictionary())
208
+ }
209
+
210
+ private func extractLIDecisionsMap(_ decisions: [NSDictionary]) -> [KotlinInt: KotlinBoolean]? {
211
+ guard !decisions.isEmpty else { return nil }
212
+ return decisions.reduce(into: [:]) { result, dict in
213
+ if let id = dict["id"] as? Int,
214
+ let consent = dict["legitimateInterestConsent"] as? Bool {
215
+ result[KotlinInt(int: Int32(id))] = KotlinBoolean(bool: consent)
173
216
  }
174
217
  }
175
- let services = usercentricsManager.denyAllForTCF(fromLayer: .initialize(from: Int(fromLayer)), consentType: .initialize(from: Int(consentType)), unsavedPurposeLIDecisions: decisions)
176
- resolve(services.toListOfDictionary())
177
218
  }
178
219
 
179
220
  @objc func denyAll(_ consentType: Double,
@@ -227,6 +268,8 @@ class RNUsercentricsModule: NSObject {
227
268
  reject("usercentrics_reactNative_clearUserSession_error", error.localizedDescription, error)
228
269
  }
229
270
  }
271
+
272
+ private static let onGppSectionChangeEvent = "onGppSectionChange"
230
273
  }
231
274
 
232
275
  // MARK: - RCTBridgeModule & TurboModule Conformance
@@ -246,6 +289,4 @@ extension RNUsercentricsModule: NativeUsercentricsSpec {
246
289
  }
247
290
  }
248
291
  #endif
249
- #else
250
- extension RNUsercentricsModule: RCTBridgeModule {}
251
292
  #endif
@@ -36,6 +36,10 @@ NS_ASSUME_NONNULL_BEGIN
36
36
  - (void)getCMPData:(RCTPromiseResolveBlock)resolve
37
37
  reject:(RCTPromiseRejectBlock)reject;
38
38
 
39
+ - (void)getDpsMetadata:(NSString *)templateId
40
+ resolve:(RCTPromiseResolveBlock)resolve
41
+ reject:(RCTPromiseRejectBlock)reject;
42
+
39
43
  - (void)getAdditionalConsentModeData:(RCTPromiseResolveBlock)resolve
40
44
  reject:(RCTPromiseRejectBlock)reject;
41
45
 
@@ -48,12 +52,21 @@ NS_ASSUME_NONNULL_BEGIN
48
52
  - (void)getUSPData:(RCTPromiseResolveBlock)resolve
49
53
  reject:(RCTPromiseRejectBlock)reject;
50
54
 
55
+ - (void)getGPPData:(RCTPromiseResolveBlock)resolve
56
+ reject:(RCTPromiseRejectBlock)reject;
57
+
58
+ - (void)getGPPString:(RCTPromiseResolveBlock)resolve
59
+ reject:(RCTPromiseRejectBlock)reject;
60
+
51
61
  - (void)getABTestingVariant:(RCTPromiseResolveBlock)resolve
52
62
  reject:(RCTPromiseRejectBlock)reject;
53
63
 
54
64
  // Configuration Setters
55
65
  - (void)setCMPId:(double)cmpId;
56
66
  - (void)setABTestingVariant:(NSString *)variant;
67
+ - (void)setGPPConsent:(NSString *)sectionName
68
+ fieldName:(NSString *)fieldName
69
+ value:(NSDictionary *)value;
57
70
  - (void)changeLanguage:(NSString *)language
58
71
  resolve:(RCTPromiseResolveBlock)resolve
59
72
  reject:(RCTPromiseRejectBlock)reject;
@@ -1,5 +1,5 @@
1
1
  import { TurboModule } from 'react-native';
2
- import type { UsercentricsOptions, UsercentricsReadyStatus, BannerSettings, UsercentricsConsentUserResponse, UsercentricsServiceConsent, UsercentricsCMPData, AdditionalConsentModeData, TCFData, CCPAData, UserDecision, TCFUserDecisions, TCFUserDecisionOnPurpose } from './models';
2
+ import type { UsercentricsOptions, UsercentricsReadyStatus, BannerSettings, UsercentricsConsentUserResponse, UsercentricsServiceConsent, UsercentricsCMPData, AdditionalConsentModeData, TCFData, CCPAData, GppData, UserDecision, TCFUserDecisions, TCFUserDecisionOnPurpose, TCFUserDecisionOnVendor } from './models';
3
3
  export interface Spec extends TurboModule {
4
4
  configure(options: UsercentricsOptions): void;
5
5
  isReady(): Promise<UsercentricsReadyStatus>;
@@ -14,18 +14,24 @@ export interface Spec extends TurboModule {
14
14
  getTCFData(): Promise<TCFData>;
15
15
  getUserSessionData(): Promise<string>;
16
16
  getUSPData(): Promise<CCPAData>;
17
+ getGPPData(): Promise<GppData>;
18
+ getGPPString(): Promise<string | null>;
17
19
  getABTestingVariant(): Promise<string>;
20
+ getDpsMetadata(templateId: string): Promise<Record<string, unknown> | null>;
18
21
  setCMPId(id: number): void;
19
22
  setABTestingVariant(variant: string): void;
23
+ setGPPConsent(sectionName: string, fieldName: string, value: Object): void;
20
24
  changeLanguage(language: string): Promise<void>;
21
25
  acceptAll(consentType: number): Promise<Array<UsercentricsServiceConsent>>;
22
26
  acceptAllForTCF(fromLayer: number, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
23
27
  denyAll(consentType: number): Promise<Array<UsercentricsServiceConsent>>;
24
- denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<TCFUserDecisionOnPurpose>): Promise<Array<UsercentricsServiceConsent>>;
28
+ denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<TCFUserDecisionOnPurpose>, unsavedVendorLIDecisions: Array<TCFUserDecisionOnVendor>): Promise<Array<UsercentricsServiceConsent>>;
25
29
  saveDecisions(decisions: Array<UserDecision>, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
26
30
  saveDecisionsForTCF(tcfDecisions: TCFUserDecisions, fromLayer: number, saveDecisions: Array<UserDecision>, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
27
31
  saveOptOutForCCPA(isOptedOut: boolean, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
28
32
  track(event: number): void;
33
+ addListener(eventName: string): void;
34
+ removeListeners(count: number): void;
29
35
  }
30
36
  declare const _default: Spec;
31
37
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeUsercentrics.js","sourceRoot":"","sources":["../src/NativeUsercentrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;AA+D/E,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,GAAG,CAAO,sBAAsB,CAAC,IAAI,aAAa,CAAC,oBAAoB,CAAC;AAEzH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC1B,MAAM,IAAI,KAAK,CACb,0DAA0D;QAC1D,sDAAsD;QACtD,wCAAwC;QACxC,0DAA0D,CAC3D,CAAC;AACJ,CAAC;AAED,eAAe,oBAA4B,CAAC"}
1
+ {"version":3,"file":"NativeUsercentrics.js","sourceRoot":"","sources":["../src/NativeUsercentrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;AAwE/E,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,GAAG,CAAO,sBAAsB,CAAC,IAAI,aAAa,CAAC,oBAAoB,CAAC;AAEzH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC1B,MAAM,IAAI,KAAK,CACb,0DAA0D;QAC1D,sDAAsD;QACtD,wCAAwC;QACxC,0DAA0D,CAC3D,CAAC;AACJ,CAAC;AAED,eAAe,oBAA4B,CAAC"}
@@ -1,4 +1,5 @@
1
- import { AdditionalConsentModeData, BannerSettings, CCPAData, TCFData, TCFDecisionUILayer, TCFUserDecisionOnPurpose, TCFUserDecisions, UsercentricsAnalyticsEventType, UsercentricsCMPData, UsercentricsConsentType, UsercentricsConsentUserResponse, UsercentricsOptions, UsercentricsReadyStatus, UsercentricsServiceConsent, UserDecision } from './models';
1
+ import { EmitterSubscription } from 'react-native';
2
+ import { AdditionalConsentModeData, BannerSettings, CCPAData, GppData, GppSectionChangePayload, TCFData, TCFDecisionUILayer, TCFUserDecisionOnPurpose, TCFUserDecisionOnVendor, TCFUserDecisions, UsercentricsAnalyticsEventType, UsercentricsCMPData, UsercentricsConsentType, UsercentricsConsentUserResponse, UsercentricsOptions, UsercentricsReadyStatus, UsercentricsServiceConsent, UserDecision } from './models';
2
3
  export declare const Usercentrics: {
3
4
  configure: (options: UsercentricsOptions) => void;
4
5
  status: () => Promise<UsercentricsReadyStatus>;
@@ -11,18 +12,23 @@ export declare const Usercentrics: {
11
12
  getCMPData: () => Promise<UsercentricsCMPData>;
12
13
  getUserSessionData: () => Promise<string>;
13
14
  getCCPAData: () => Promise<CCPAData>;
15
+ getGPPData: () => Promise<GppData>;
16
+ getGPPString: () => Promise<string | null>;
14
17
  getTCFData: () => Promise<TCFData>;
15
18
  getAdditionalConsentModeData: () => Promise<AdditionalConsentModeData>;
19
+ getDpsMetadata: (templateId: string) => Promise<Record<string, unknown> | null>;
16
20
  changeLanguage: (language: string) => Promise<void>;
17
21
  acceptAll: (consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
18
22
  acceptAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
19
23
  denyAll: (consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
20
- denyAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions?: TCFUserDecisionOnPurpose[]) => Promise<Array<UsercentricsServiceConsent>>;
24
+ denyAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions?: TCFUserDecisionOnPurpose[], unsavedVendorLIDecisions?: TCFUserDecisionOnVendor[]) => Promise<Array<UsercentricsServiceConsent>>;
21
25
  saveDecisions: (decisions: UserDecision[], consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
22
26
  saveDecisionsForTCF: (tcfDecisions: TCFUserDecisions, fromLayer: TCFDecisionUILayer, decisions: UserDecision[], consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
23
27
  saveOptOutForCCPA: (isOptedOut: boolean, consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
24
28
  setCMPId: (id: number) => void;
25
29
  setABTestingVariant: (variant: string) => void;
30
+ setGPPConsent: (sectionName: string, fieldName: string, value: unknown) => Promise<void>;
26
31
  track: (event: UsercentricsAnalyticsEventType) => Promise<void>;
27
32
  clearUserSession: () => Promise<UsercentricsReadyStatus>;
33
+ onGppSectionChange: (callback: (payload: GppSectionChangePayload) => void) => EmitterSubscription;
28
34
  };
@@ -1,7 +1,8 @@
1
- import { NativeModules } from 'react-native';
1
+ import { NativeEventEmitter, NativeModules } from 'react-native';
2
2
  import NativeUsercentrics from './NativeUsercentrics';
3
3
  // Use TurboModule when available, fallback to legacy bridge
4
4
  const RNUsercentricsModule = NativeUsercentrics || NativeModules.RNUsercentricsModule;
5
+ const eventEmitter = new NativeEventEmitter(RNUsercentricsModule);
5
6
  export const Usercentrics = {
6
7
  configure: (options) => {
7
8
  RNUsercentricsModule.configure(options);
@@ -45,6 +46,14 @@ export const Usercentrics = {
45
46
  await RNUsercentricsModule.isReady();
46
47
  return RNUsercentricsModule.getUSPData();
47
48
  },
49
+ getGPPData: async () => {
50
+ await RNUsercentricsModule.isReady();
51
+ return RNUsercentricsModule.getGPPData();
52
+ },
53
+ getGPPString: async () => {
54
+ await RNUsercentricsModule.isReady();
55
+ return RNUsercentricsModule.getGPPString();
56
+ },
48
57
  getTCFData: async () => {
49
58
  await RNUsercentricsModule.isReady();
50
59
  return RNUsercentricsModule.getTCFData();
@@ -53,6 +62,10 @@ export const Usercentrics = {
53
62
  await RNUsercentricsModule.isReady();
54
63
  return RNUsercentricsModule.getAdditionalConsentModeData();
55
64
  },
65
+ getDpsMetadata: async (templateId) => {
66
+ await RNUsercentricsModule.isReady();
67
+ return RNUsercentricsModule.getDpsMetadata(templateId);
68
+ },
56
69
  changeLanguage: async (language) => {
57
70
  await RNUsercentricsModule.isReady();
58
71
  return RNUsercentricsModule.changeLanguage(language);
@@ -69,9 +82,9 @@ export const Usercentrics = {
69
82
  await RNUsercentricsModule.isReady();
70
83
  return RNUsercentricsModule.denyAll(consentType);
71
84
  },
72
- denyAllForTCF: async (fromLayer, consentType, unsavedPurposeLIDecisions = []) => {
85
+ denyAllForTCF: async (fromLayer, consentType, unsavedPurposeLIDecisions = [], unsavedVendorLIDecisions = []) => {
73
86
  await RNUsercentricsModule.isReady();
74
- return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions);
87
+ return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions, unsavedVendorLIDecisions);
75
88
  },
76
89
  saveDecisions: async (decisions, consentType) => {
77
90
  await RNUsercentricsModule.isReady();
@@ -91,6 +104,10 @@ export const Usercentrics = {
91
104
  setABTestingVariant: (variant) => {
92
105
  RNUsercentricsModule.setABTestingVariant(variant);
93
106
  },
107
+ setGPPConsent: async (sectionName, fieldName, value) => {
108
+ await RNUsercentricsModule.isReady();
109
+ RNUsercentricsModule.setGPPConsent(sectionName, fieldName, { value });
110
+ },
94
111
  track: async (event) => {
95
112
  await RNUsercentricsModule.isReady();
96
113
  RNUsercentricsModule.track(event);
@@ -99,5 +116,8 @@ export const Usercentrics = {
99
116
  await RNUsercentricsModule.isReady();
100
117
  return RNUsercentricsModule.clearUserSession();
101
118
  },
119
+ onGppSectionChange: (callback) => {
120
+ return eventEmitter.addListener("onGppSectionChange", callback);
121
+ },
102
122
  };
103
123
  //# sourceMappingURL=Usercentrics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Usercentrics.js","sourceRoot":"","sources":["../src/Usercentrics.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAW,MAAM,cAAc,CAAC;AAkBrD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,kBAAkB,IAAI,aAAa,CAAC,oBAAoB,CAAC;AAEtF,MAAM,CAAC,MAAM,YAAY,GAAG;IAExB,SAAS,EAAE,CAAC,OAA4B,EAAE,EAAE;QACxC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,EAAE,GAAqC,EAAE;QAC3C,OAAO,oBAAoB,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,OAAwB,EAA4C,EAAE;QACzF,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,OAAwB,EAA4C,EAAE;QAC1F,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,YAAoB,EAAoC,EAAE;QACjF,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,EAAE,KAAK,IAAqB,EAAE;QACzC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAED,mBAAmB,EAAE,KAAK,IAA4B,EAAE;QACpD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;IACtD,CAAC;IAED,WAAW,EAAE,KAAK,IAAgD,EAAE;QAChE,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,UAAU,EAAE,KAAK,IAAkC,EAAE;QACjD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,kBAAkB,EAAE,KAAK,IAAqB,EAAE;QAC5C,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;IACrD,CAAC;IAED,WAAW,EAAE,KAAK,IAAuB,EAAE;QACvC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU,EAAE,KAAK,IAAsB,EAAE;QACrC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,4BAA4B,EAAE,KAAK,IAAwC,EAAE;QACzE,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,4BAA4B,EAAE,CAAC;IAC/D,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,QAAgB,EAAiB,EAAE;QACtD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,EAAE,KAAK,EAAE,WAAoC,EAA8C,EAAE;QAClG,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,SAA6B,EAAE,WAAoC,EAA8C,EAAE;QACvI,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAoC,EAA8C,EAAE;QAChG,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,SAA6B,EAAE,WAAoC,EAAE,4BAAwD,EAAE,EAA8C,EAAE;QACjM,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC;IACjG,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,SAAyB,EAAE,WAAoC,EAA8C,EAAE;QACjI,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,mBAAmB,EAAE,KAAK,EAAE,YAA8B,EAAE,SAA6B,EAAE,SAAyB,EAAE,WAAoC,EAA8C,EAAE;QACtM,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,iBAAiB,EAAE,KAAK,EAAE,UAAmB,EAAE,WAAoC,EAA8C,EAAE;QAC/H,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ,EAAE,CAAC,EAAU,EAAE,EAAE;QACrB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB,EAAE,CAAC,OAAe,EAAE,EAAE;QACrC,oBAAoB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,EAAE,KAAK,EAAE,KAAqC,EAAE,EAAE;QACnD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,EAAE,KAAK,IAAsC,EAAE;QAC3D,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC;CACJ,CAAA"}
1
+ {"version":3,"file":"Usercentrics.js","sourceRoot":"","sources":["../src/Usercentrics.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,kBAAkB,EAAE,aAAa,EAAW,MAAM,cAAc,CAAC;AAqB9F,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,kBAAkB,IAAI,aAAa,CAAC,oBAAoB,CAAC;AACtF,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,YAAY,GAAG;IAExB,SAAS,EAAE,CAAC,OAA4B,EAAE,EAAE;QACxC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,EAAE,GAAqC,EAAE;QAC3C,OAAO,oBAAoB,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,OAAwB,EAA4C,EAAE;QACzF,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,OAAwB,EAA4C,EAAE;QAC1F,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,YAAoB,EAAoC,EAAE;QACjF,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,eAAe,EAAE,KAAK,IAAqB,EAAE;QACzC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAED,mBAAmB,EAAE,KAAK,IAA4B,EAAE;QACpD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;IACtD,CAAC;IAED,WAAW,EAAE,KAAK,IAAgD,EAAE;QAChE,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,UAAU,EAAE,KAAK,IAAkC,EAAE;QACjD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,kBAAkB,EAAE,KAAK,IAAqB,EAAE;QAC5C,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;IACrD,CAAC;IAED,WAAW,EAAE,KAAK,IAAuB,EAAE;QACvC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,UAAU,EAAE,KAAK,IAAsB,EAAE;QACrC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,YAAY,EAAE,KAAK,IAA4B,EAAE;QAC7C,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,YAAY,EAAE,CAAC;IAC/C,CAAC;IAED,UAAU,EAAE,KAAK,IAAsB,EAAE;QACrC,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,4BAA4B,EAAE,KAAK,IAAwC,EAAE;QACzE,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,4BAA4B,EAAE,CAAC;IAC/D,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,UAAkB,EAA2C,EAAE;QAClF,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc,EAAE,KAAK,EAAE,QAAgB,EAAiB,EAAE;QACtD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,EAAE,KAAK,EAAE,WAAoC,EAA8C,EAAE;QAClG,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,SAA6B,EAAE,WAAoC,EAA8C,EAAE;QACvI,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAoC,EAA8C,EAAE;QAChG,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,SAA6B,EAAE,WAAoC,EAAE,4BAAwD,EAAE,EAAE,2BAAsD,EAAE,EAA8C,EAAE;QAC3P,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,yBAAyB,EAAE,wBAAwB,CAAC,CAAC;IAC3H,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,SAAyB,EAAE,WAAoC,EAA8C,EAAE;QACjI,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,mBAAmB,EAAE,KAAK,EAAE,YAA8B,EAAE,SAA6B,EAAE,SAAyB,EAAE,WAAoC,EAA8C,EAAE;QACtM,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,iBAAiB,EAAE,KAAK,EAAE,UAAmB,EAAE,WAAoC,EAA8C,EAAE;QAC/H,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ,EAAE,CAAC,EAAU,EAAE,EAAE;QACrB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB,EAAE,CAAC,OAAe,EAAE,EAAE;QACrC,oBAAoB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,WAAmB,EAAE,SAAiB,EAAE,KAAc,EAAE,EAAE;QAC5E,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,oBAAoB,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,KAAK,EAAY,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,EAAE,KAAK,EAAE,KAAqC,EAAE,EAAE;QACnD,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,EAAE,KAAK,IAAsC,EAAE;QAC3D,MAAM,oBAAoB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC;IAED,kBAAkB,EAAE,CAAC,QAAoD,EAAuB,EAAE;QAC9F,OAAO,YAAY,CAAC,WAAW,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;CACJ,CAAA"}
@@ -13,18 +13,24 @@ export interface Spec extends TurboModule {
13
13
  getTCFData(): Promise<Object>;
14
14
  getUserSessionData(): Promise<string>;
15
15
  getUSPData(): Promise<Object>;
16
+ getGPPData(): Promise<Object>;
17
+ getGPPString(): Promise<string | null>;
16
18
  getABTestingVariant(): Promise<string>;
19
+ getDpsMetadata(templateId: string): Promise<Object | null>;
17
20
  setCMPId(id: number): void;
18
21
  setABTestingVariant(variant: string): void;
22
+ setGPPConsent(sectionName: string, fieldName: string, value: Object): void;
19
23
  changeLanguage(language: string): Promise<void>;
20
24
  acceptAll(consentType: number): Promise<Array<Object>>;
21
25
  acceptAllForTCF(fromLayer: number, consentType: number): Promise<Array<Object>>;
22
26
  denyAll(consentType: number): Promise<Array<Object>>;
23
- denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>): Promise<Array<Object>>;
27
+ denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>, unsavedVendorLIDecisions: Array<Object>): Promise<Array<Object>>;
24
28
  saveDecisions(decisions: Array<Object>, consentType: number): Promise<Array<Object>>;
25
29
  saveDecisionsForTCF(tcfDecisions: Object, fromLayer: number, saveDecisions: Array<Object>, consentType: number): Promise<Array<Object>>;
26
30
  saveOptOutForCCPA(isOptedOut: boolean, consentType: number): Promise<Array<Object>>;
27
31
  track(event: number): void;
32
+ addListener(eventName: string): void;
33
+ removeListeners(count: number): void;
28
34
  }
29
35
  declare const _default: Spec | null;
30
36
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeUsercentricsModule.js","sourceRoot":"","sources":["../../src/fabric/NativeUsercentricsModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAiDnD,eAAe,mBAAmB,CAAC,GAAG,CAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"NativeUsercentricsModule.js","sourceRoot":"","sources":["../../src/fabric/NativeUsercentricsModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAwDnD,eAAe,mBAAmB,CAAC,GAAG,CAAO,sBAAsB,CAAC,CAAC"}
@@ -13,5 +13,7 @@ export declare class CCPASettings {
13
13
  secondLayerDescription: string;
14
14
  secondLayerHideLanguageSwitch: boolean;
15
15
  btnMoreInfo: string;
16
- constructor(optOutNoticeLabel: string, btnSave: string, firstLayerTitle: string, isActive: boolean, showOnPageLoad: boolean, reshowAfterDays: number, iabAgreementExists: boolean, appFirstLayerDescription: string, firstLayerMobileDescriptionIsActive: boolean, firstLayerMobileDescription: string, secondLayerTitle: string, secondLayerDescription: string, secondLayerHideLanguageSwitch: boolean, btnMoreInfo: string);
16
+ mspaCoveredTransaction?: boolean;
17
+ mspaMode?: number;
18
+ constructor(optOutNoticeLabel: string, btnSave: string, firstLayerTitle: string, isActive: boolean, showOnPageLoad: boolean, reshowAfterDays: number, iabAgreementExists: boolean, appFirstLayerDescription: string, firstLayerMobileDescriptionIsActive: boolean, firstLayerMobileDescription: string, secondLayerTitle: string, secondLayerDescription: string, secondLayerHideLanguageSwitch: boolean, btnMoreInfo: string, mspaCoveredTransaction?: boolean, mspaMode?: number);
17
19
  }
@@ -1,5 +1,5 @@
1
1
  export class CCPASettings {
2
- constructor(optOutNoticeLabel, btnSave, firstLayerTitle, isActive, showOnPageLoad, reshowAfterDays, iabAgreementExists, appFirstLayerDescription, firstLayerMobileDescriptionIsActive, firstLayerMobileDescription, secondLayerTitle, secondLayerDescription, secondLayerHideLanguageSwitch, btnMoreInfo) {
2
+ constructor(optOutNoticeLabel, btnSave, firstLayerTitle, isActive, showOnPageLoad, reshowAfterDays, iabAgreementExists, appFirstLayerDescription, firstLayerMobileDescriptionIsActive, firstLayerMobileDescription, secondLayerTitle, secondLayerDescription, secondLayerHideLanguageSwitch, btnMoreInfo, mspaCoveredTransaction, mspaMode) {
3
3
  this.optOutNoticeLabel = optOutNoticeLabel;
4
4
  this.btnSave = btnSave;
5
5
  this.firstLayerTitle = firstLayerTitle;
@@ -14,6 +14,8 @@ export class CCPASettings {
14
14
  this.secondLayerDescription = secondLayerDescription;
15
15
  this.secondLayerHideLanguageSwitch = secondLayerHideLanguageSwitch;
16
16
  this.btnMoreInfo = btnMoreInfo;
17
+ this.mspaCoveredTransaction = mspaCoveredTransaction;
18
+ this.mspaMode = mspaMode;
17
19
  }
18
20
  }
19
21
  //# sourceMappingURL=CCPASettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CCPASettings.js","sourceRoot":"","sources":["../../src/models/CCPASettings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAiBrB,YACI,iBAAyB,EACzB,OAAe,EACf,eAAuB,EACvB,QAAiB,EACjB,cAAuB,EACvB,eAAuB,EACvB,kBAA2B,EAC3B,wBAAgC,EAChC,mCAA4C,EAC5C,2BAAmC,EACnC,gBAAwB,EACxB,sBAA8B,EAC9B,6BAAsC,EACtC,WAAmB;QAEnB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAA;QACxD,IAAI,CAAC,mCAAmC,GAAG,mCAAmC,CAAA;QAC9E,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAA;QAC9D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAA;QAClE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"CCPASettings.js","sourceRoot":"","sources":["../../src/models/CCPASettings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAmBrB,YACI,iBAAyB,EACzB,OAAe,EACf,eAAuB,EACvB,QAAiB,EACjB,cAAuB,EACvB,eAAuB,EACvB,kBAA2B,EAC3B,wBAAgC,EAChC,mCAA4C,EAC5C,2BAAmC,EACnC,gBAAwB,EACxB,sBAA8B,EAC9B,6BAAsC,EACtC,WAAmB,EACnB,sBAAgC,EAChC,QAAiB;QAEjB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAA;QACxD,IAAI,CAAC,mCAAmC,GAAG,mCAAmC,CAAA;QAC9E,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAA;QAC9D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAA;QAClE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,6 @@
1
+ export declare class GppData {
2
+ gppString: string;
3
+ applicableSections: number[];
4
+ sections: Record<string, Record<string, unknown>>;
5
+ constructor(gppString: string, applicableSections: number[], sections: Record<string, Record<string, unknown>>);
6
+ }
@@ -0,0 +1,8 @@
1
+ export class GppData {
2
+ constructor(gppString, applicableSections, sections) {
3
+ this.gppString = gppString;
4
+ this.applicableSections = applicableSections;
5
+ this.sections = sections;
6
+ }
7
+ }
8
+ //# sourceMappingURL=GppData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GppData.js","sourceRoot":"","sources":["../../src/models/GppData.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAKhB,YACI,SAAiB,EACjB,kBAA4B,EAC5B,QAAiD;QAEjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,4 @@
1
+ export declare class GppSectionChangePayload {
2
+ data: string;
3
+ constructor(data: string);
4
+ }
@@ -0,0 +1,6 @@
1
+ export class GppSectionChangePayload {
2
+ constructor(data) {
3
+ this.data = data;
4
+ }
5
+ }
6
+ //# sourceMappingURL=GppSectionChangePayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GppSectionChangePayload.js","sourceRoot":"","sources":["../../src/models/GppSectionChangePayload.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAGhC,YAAY,IAAY;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ"}