@@ -2,10 +2,15 @@ diff --git a/node_modules/react-native-onetrust-cmp/android/src/main/java/com/on
22index 199531c..c3cfd17 100644
33--- a/node_modules/react-native-onetrust-cmp/android/src/main/java/com/onetrust/OneTrust.java
44+++ b/node_modules/react-native-onetrust-cmp/android/src/main/java/com/onetrust/OneTrust.java
5- @@ -313,6 +313,34 @@ public class OneTrust extends ReactContextBaseJavaModule {
5+ @@ -313,6 +313,39 @@ public class OneTrust extends ReactContextBaseJavaModule {
66 promise.resolve(googleConsentData.toString());
77 }
88
9+ + @ReactMethod
10+ + public void fetchPreferencesCmpApiData(Promise promise){
11+ + promise.resolve(null);
12+ + }
13+ +
914+ @ReactMethod
1015+ public void getPreferenceCenterData(Promise promise){
1116+ try {
@@ -38,13 +43,18 @@ index 199531c..c3cfd17 100644
3843 public void showConsentPurposesUI(){
3944 final Activity currentActivity = getCurrentActivity();
4045diff --git a/node_modules/react-native-onetrust-cmp/iOS/OneTrust.m b/node_modules/react-native-onetrust-cmp/iOS/OneTrust.m
41- index 2c1a676..630a711 100644
46+ index 2c1a676..c20f76a 100644
4247--- a/node_modules/react-native-onetrust-cmp/iOS/OneTrust.m
4348+++ b/node_modules/react-native-onetrust-cmp/iOS/OneTrust.m
44- @@ -36,6 +36,16 @@ + (BOOL)requiresMainQueueSetup{
49+ @@ -36,6 +36,21 @@ + (BOOL)requiresMainQueueSetup{
4550 rejecter:(RCTPromiseRejectBlock)reject
4651 )
4752
53+ + RCT_EXTERN_METHOD(fetchPreferencesCmpApiData:
54+ + (RCTPromiseResolveBlock)resolve
55+ + rejecter:(RCTPromiseRejectBlock)reject
56+ + )
57+ +
4858+ RCT_EXTERN_METHOD(getPreferenceCenterData:
4959+ (RCTPromiseResolveBlock)resolve
5060+ rejecter:(RCTPromiseRejectBlock)reject
@@ -59,50 +69,88 @@ index 2c1a676..630a711 100644
5969 (RCTPromiseResolveBlock)resolve
6070 rejecter:(RCTPromiseRejectBlock)reject
6171diff --git a/node_modules/react-native-onetrust-cmp/iOS/OneTrust.swift b/node_modules/react-native-onetrust-cmp/iOS/OneTrust.swift
62- index 0030d64..dd789e7 100644
72+ index 0030d64..c9c97f0 100644
6373--- a/node_modules/react-native-onetrust-cmp/iOS/OneTrust.swift
6474+++ b/node_modules/react-native-onetrust-cmp/iOS/OneTrust.swift
65- @@ -108,6 +108,32 @@ import AppTrackingTransparency
75+ @@ -108,6 +108,62 @@ import AppTrackingTransparency
6676
6777 }
6878
79+ + private func serializeToJSON(_ data: [String: Any]) -> String? {
80+ + guard JSONSerialization.isValidJSONObject(data),
81+ + let jsonData = try? JSONSerialization.data(withJSONObject: data),
82+ + let jsonString = String(data: jsonData, encoding: .utf8) else {
83+ + return nil
84+ + }
85+ + return jsonString
86+ + }
87+ +
88+ + @objc(fetchPreferencesCmpApiData:rejecter:)
89+ + public func fetchPreferencesCmpApiData(_ resolve:@escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock){
90+ + OTPublishersHeadlessSDK.shared.fetchPreferencesCmpApiData { _ in
91+ + resolve(nil)
92+ + }
93+ + }
94+ +
6995+ @objc(getPreferenceCenterData:rejecter:)
7096+ public func getPreferenceCenterData(_ resolve:@escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock){
71- + let data = OTPublishersHeadlessSDK.shared.getPreferenceCenterData()
72- + if let jsonData = try? JSONSerialization.data(withJSONObject: data),
73- + let jsonString = String(data: jsonData, encoding: .utf8) {
74- + resolve(jsonString)
75- + } else if let jsonString = data as? String {
76- + resolve(jsonString)
77- + } else {
78- + reject("Error parsing preference center data","OneTrust getPreferenceCenterData returned unsupported type.",nil)
97+ + if let data = OTPublishersHeadlessSDK.shared.getPreferenceCenterData() {
98+ + if let json = serializeToJSON(data) {
99+ + resolve(json)
100+ + } else {
101+ + reject("OT_GET_PREFERENCE_CENTER_DATA","OneTrust getPreferenceCenterData returned unsupported type.",nil)
102+ + }
103+ + return
104+ + }
105+ + OTPublishersHeadlessSDK.shared.fetchPreferencesCmpApiData { [weak self] _ in
106+ + guard let data = OTPublishersHeadlessSDK.shared.getPreferenceCenterData(),
107+ + let json = self?.serializeToJSON(data) else {
108+ + resolve(nil)
109+ + return
110+ + }
111+ + resolve(json)
79112+ }
80113+ }
81114+
82115+ @objc(getBannerData:rejecter:)
83116+ public func getBannerData(_ resolve:@escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock){
84- + let data = OTPublishersHeadlessSDK.shared.getBannerData()
85- + if let jsonData = try? JSONSerialization.data(withJSONObject: data),
86- + let jsonString = String(data: jsonData, encoding: .utf8) {
87- + resolve(jsonString)
88- + } else if let jsonString = data as? String {
89- + resolve(jsonString)
90- + } else {
91- + reject("Error parsing banner data","OneTrust getBannerData returned unsupported type.",nil)
117+ + if let data = OTPublishersHeadlessSDK.shared.getBannerData() {
118+ + if let json = serializeToJSON(data) {
119+ + resolve(json)
120+ + } else {
121+ + reject("OT_GET_BANNER_DATA","OneTrust getBannerData returned unsupported type.",nil)
122+ + }
123+ + return
124+ + }
125+ + OTPublishersHeadlessSDK.shared.fetchBannerCmpApiData { [weak self] _ in
126+ + guard let data = OTPublishersHeadlessSDK.shared.getBannerData(),
127+ + let json = self?.serializeToJSON(data) else {
128+ + resolve(nil)
129+ + return
130+ + }
131+ + resolve(json)
92132+ }
93133+ }
94134+
95135 @objc(shouldShowBanner:rejecter:)
96136 public func shouldShowBanner(_ resolve:@escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void{
97137 let shouldShowBanner = OTPublishersHeadlessSDK.shared.shouldShowBanner()
98138diff --git a/node_modules/react-native-onetrust-cmp/index.ts b/node_modules/react-native-onetrust-cmp/index.ts
99- index f99e8c5..2facf15 100644
139+ index f99e8c5..33c48c8 100644
100140--- a/node_modules/react-native-onetrust-cmp/index.ts
101141+++ b/node_modules/react-native-onetrust-cmp/index.ts
102- @@ -149,6 +149,28 @@ export default class OTPublishersNativeSDK{
142+ @@ -149,6 +149,36 @@ export default class OTPublishersNativeSDK{
103143 return JSON.parse(googleConsentModeData);
104144 }
105145
146+ + /**
147+ + * Fetches preference center data from the OneTrust CMP API.
148+ + * Must be called before getPreferenceCenterData on SDK versions 202504.1.0+.
149+ + */
150+ + static async fetchPreferencesCmpApiData():Promise<void>{
151+ + await OneTrust.fetchPreferencesCmpApiData()
152+ + }
153+ +
106154+ /**
107155+ * @returns Promise object is a dictionary of the preference center data
108156+ */
0 commit comments