@didomi/react-native 1.11.0 → 1.12.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 (39) hide show
  1. package/android/build.gradle +14 -22
  2. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  3. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  4. package/android/gradle.properties +6 -4
  5. package/android/gradlew +154 -103
  6. package/android/gradlew.bat +7 -18
  7. package/android/src/main/java/com/reactnativedidomi/DidomiModule.kt +186 -111
  8. package/ios/Didomi.m +4 -2
  9. package/ios/Didomi.xcodeproj/project.pbxproj +4 -4
  10. package/ios/RNDidomi.swift +51 -30
  11. package/lib/commonjs/Constants.js +3 -3
  12. package/lib/commonjs/Constants.js.map +1 -1
  13. package/lib/commonjs/Didomi.js +40 -87
  14. package/lib/commonjs/Didomi.js.map +1 -1
  15. package/lib/commonjs/DidomiListener.js +16 -18
  16. package/lib/commonjs/DidomiListener.js.map +1 -1
  17. package/lib/commonjs/DidomiTypes.js +0 -1
  18. package/lib/commonjs/DidomiTypes.js.map +1 -1
  19. package/lib/commonjs/index.js +0 -2
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/module/Constants.js +3 -3
  22. package/lib/module/Constants.js.map +1 -1
  23. package/lib/module/Didomi.js +40 -82
  24. package/lib/module/Didomi.js.map +1 -1
  25. package/lib/module/DidomiListener.js +16 -15
  26. package/lib/module/DidomiListener.js.map +1 -1
  27. package/lib/module/DidomiTypes.js +0 -1
  28. package/lib/module/DidomiTypes.js.map +1 -1
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/typescript/Constants.d.ts +1 -1
  31. package/lib/typescript/Didomi.d.ts +46 -46
  32. package/lib/typescript/DidomiListener.d.ts +2 -2
  33. package/lib/typescript/DidomiTypes.d.ts +17 -12
  34. package/package.json +5 -5
  35. package/react-native-didomi.podspec +2 -2
  36. package/src/Constants.ts +1 -1
  37. package/src/Didomi.ts +47 -39
  38. package/src/DidomiListener.ts +24 -14
  39. package/src/DidomiTypes.ts +17 -12
package/src/Didomi.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { NativeModules } from 'react-native';
2
2
  import { DidomiListener } from './DidomiListener';
3
- import { DidomiEventType, UserStatus } from './DidomiTypes';
3
+ import { DidomiEventType, Purpose, UserStatus, Vendor } from './DidomiTypes';
4
4
  import { DIDOMI_USER_AGENT_NAME, DIDOMI_VERSION } from './Constants';
5
5
 
6
6
  const { Didomi: RNDidomi } = NativeModules;
@@ -52,12 +52,20 @@ export const Didomi = {
52
52
  /**
53
53
  * Listen to SDK ready state
54
54
  */
55
- onReady: (): Promise<void> => DidomiListener.onReady(),
55
+ onReady: (): Promise<void> => {
56
+ var promise = DidomiListener.setOnReadyListener();
57
+ RNDidomi.onReady();
58
+ return promise;
59
+ },
56
60
 
57
61
  /**
58
62
  * Listen to SDK errors
59
63
  */
60
- onError: (): Promise<any> => DidomiListener.onError(),
64
+ onError: (): Promise<void> => {
65
+ var promise = DidomiListener.setOnErrorListener();
66
+ RNDidomi.onError();
67
+ return promise;
68
+ },
61
69
 
62
70
  /**
63
71
  * Provide the objects required to display UI elements
@@ -116,65 +124,65 @@ export const Didomi = {
116
124
  * Method used to get an array of disabled purposes.
117
125
  * @returns: array of disabled purposes.
118
126
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
119
- * has been replaced by getUserStatus().getPurposes().getConsent().getDisabled().
127
+ * has been replaced by getUserStatus().purposes.consent.disabled.
120
128
  */
121
- getDisabledPurposes: (): Promise<any[]> => RNDidomi.getDisabledPurposes(),
129
+ getDisabledPurposes: (): Promise<Purpose[]> => RNDidomi.getDisabledPurposes(),
122
130
 
123
131
  /**
124
132
  * Method used to get a set of disabled purpose IDs.
125
133
  * @returns: set that contains the IDs of disabled purposes.
126
134
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
127
- * has been replaced by getUserStatus().getPurposes().getConsent().getDisabled().
135
+ * has been replaced by getUserStatus().purposes.consent.enabled.
128
136
  */
129
- getDisabledPurposeIds: (): Promise<any[]> => RNDidomi.getDisabledPurposeIds(),
137
+ getDisabledPurposeIds: (): Promise<string[]> => RNDidomi.getDisabledPurposeIds(),
130
138
 
131
139
  /**
132
140
  * Method used to get an array of disabled vendors.
133
141
  * @returns: array of disabled vendors.
134
142
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
135
- * has been replaced by getUserStatus().getVendors().getConsent().getDisabled().
143
+ * has been replaced by getUserStatus().vendors.consent.disabled.
136
144
  */
137
- getDisabledVendors: (): Promise<any[]> => RNDidomi.getDisabledVendors(),
145
+ getDisabledVendors: (): Promise<Vendor[]> => RNDidomi.getDisabledVendors(),
138
146
 
139
147
  /**
140
148
  * Method used to get a set of disabled vendor IDs.
141
149
  * @returns: set that contains the IDs of disabled vendors.
142
150
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
143
- * has been replaced by getUserStatus().getVendors().getConsent().getDisabled().
151
+ * has been replaced by getUserStatus().vendors.consent.disabled.
144
152
  */
145
- getDisabledVendorIds: (): Promise<any[]> => RNDidomi.getDisabledVendorIds(),
153
+ getDisabledVendorIds: (): Promise<string[]> => RNDidomi.getDisabledVendorIds(),
146
154
 
147
155
  /**
148
156
  * Method used to get an array of enabled purposes.
149
157
  * @returns: array of enabled purposes.
150
158
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
151
- * has been replaced by getUserStatus().getPurposes().getConsent().getEnabled().
159
+ * has been replaced by getUserStatus().purposes.consent.enabled.
152
160
  */
153
- getEnabledPurposes: (): Promise<any[]> => RNDidomi.getEnabledPurposes(),
161
+ getEnabledPurposes: (): Promise<Purpose[]> => RNDidomi.getEnabledPurposes(),
154
162
 
155
163
  /**
156
164
  * Method used to get a set of enabled purpose IDs.
157
165
  * @returns: set that contains the IDs of enabled purposes.
158
166
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
159
- * has been replaced by getUserStatus().getPurposes().getConsent().getEnabled().
167
+ * has been replaced by getUserStatus().purposes.consent.enabled.
160
168
  */
161
- getEnabledPurposeIds: (): Promise<any[]> => RNDidomi.getEnabledPurposeIds(),
169
+ getEnabledPurposeIds: (): Promise<string[]> => RNDidomi.getEnabledPurposeIds(),
162
170
 
163
171
  /**
164
172
  * Method used to get an array of enabled vendors.
165
173
  * @returns: array of enabled vendors.
166
174
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
167
- * has been replaced by getUserStatus().getVendors().getConsent().getEnabled().
175
+ * has been replaced by getUserStatus().vendors.consent.enabled.
168
176
  */
169
- getEnabledVendors: (): Promise<any[]> => RNDidomi.getEnabledVendors(),
177
+ getEnabledVendors: (): Promise<Vendor[]> => RNDidomi.getEnabledVendors(),
170
178
 
171
179
  /**
172
180
  * Method used to get a set of enabled vendor IDs.
173
181
  * @returns: set that contains the IDs of enabled vendors.
174
182
  * @deprecated use {@link #getUserStatus()} instead. The result of this method
175
- * has been replaced by getUserStatus().getVendors().getConsent().getEnabled().
183
+ * has been replaced by getUserStatus().vendors.consent.enabled.
176
184
  */
177
- getEnabledVendorIds: (): Promise<any[]> => RNDidomi.getEnabledVendorIds(),
185
+ getEnabledVendorIds: (): Promise<string[]> => RNDidomi.getEnabledVendorIds(),
178
186
 
179
187
  /**
180
188
  * Get JavaScript to embed into a WebView to pass the consent status from the app
@@ -192,32 +200,32 @@ export const Didomi = {
192
200
  * @param purposeId: purpose ID used in the search.
193
201
  * @returns: purpose found in the array.
194
202
  */
195
- getPurpose: (purposeId: string): Promise<any> => RNDidomi.getPurpose(purposeId),
203
+ getPurpose: (purposeId: string): Promise<Purpose> => RNDidomi.getPurpose(purposeId),
196
204
 
197
205
  /**
198
206
  * Method used to get an array of required purposes.
199
207
  *
200
208
  * @returns: array of required purposes.
201
209
  */
202
- getRequiredPurposes: (): Promise<any[]> => RNDidomi.getRequiredPurposes(),
210
+ getRequiredPurposes: (): Promise<Purpose[]> => RNDidomi.getRequiredPurposes(),
203
211
 
204
212
  /**
205
213
  * Get the configured purpose IDs
206
214
  * @returns: set of purpose IDs.
207
215
  */
208
- getRequiredPurposeIds: (): Promise<any[]> => RNDidomi.getRequiredPurposeIds(),
216
+ getRequiredPurposeIds: (): Promise<string[]> => RNDidomi.getRequiredPurposeIds(),
209
217
 
210
218
  /**
211
219
  * Method used to get an array of required vendors.
212
220
  * @returns: array of required vendors.
213
221
  */
214
- getRequiredVendors: (): Promise<any[]> => RNDidomi.getRequiredVendors(),
222
+ getRequiredVendors: (): Promise<Vendor[]> => RNDidomi.getRequiredVendors(),
215
223
 
216
224
  /**
217
225
  * Get the configured vendor IDs
218
226
  * @returns: set of vendor IDs.
219
227
  */
220
- getRequiredVendorIds: (): Promise<any[]> => RNDidomi.getRequiredVendorIds(),
228
+ getRequiredVendorIds: (): Promise<string[]> => RNDidomi.getRequiredVendorIds(),
221
229
 
222
230
  /**
223
231
  * Method used to get a dictionary/map in the form of { "en": "Key in English", "fr": "Key in French." }
@@ -255,8 +263,8 @@ export const Didomi = {
255
263
  * @param purposeId: The purpose ID to check consent for
256
264
  * @returns: The user consent status for the specified purpose
257
265
  * @deprecated use {@link #getUserStatus()} instead. Search the purposeId in
258
- * getUserStatus().getPurposes().getConsent().getEnabled() or
259
- * getUserStatus().getPurposes().getConsent().getDisabled().
266
+ * getUserStatus().purposes.consent.enabled or
267
+ * getUserStatus().purposes.consent.enabled.
260
268
  */
261
269
  getUserConsentStatusForPurpose: (purposeId: string): Promise<boolean> => RNDidomi.getUserConsentStatusForPurpose(purposeId),
262
270
 
@@ -265,8 +273,8 @@ export const Didomi = {
265
273
  * @param vendorId: The vendor ID to check consent for
266
274
  * @returns: The user consent status for the specified vendor
267
275
  * @deprecated use {@link #getUserStatus()} instead. Search the vendorId in
268
- * getUserStatus().getVendors().getConsent().getEnabled() or
269
- * getUserStatus().getVendors().getConsent().getDisabled().
276
+ * getUserStatus().vendors.consent.enabled or
277
+ * getUserStatus().vendors.consent.disabled.
270
278
  */
271
279
  getUserConsentStatusForVendor: (vendorId: string): Promise<boolean> => RNDidomi.getUserConsentStatusForVendor(vendorId),
272
280
 
@@ -275,8 +283,8 @@ export const Didomi = {
275
283
  * @param vendorId: The ID of the vendor
276
284
  * @returns: The user consent status corresponding to the specified vendor and all its required purposes.
277
285
  * @deprecated use {@link #getUserStatus()} instead. The result of this method has been replaced
278
- * by getUserStatus().getVendors().getGlobalConsent().getEnabled() or
279
- * getUserStatus().getVendors().getGlobalConsent().getDisabled().
286
+ * by getUserStatus().vendors.global_consent.enabled or
287
+ * getUserStatus().vendors.global_consent.disabled.
280
288
  */
281
289
  getUserConsentStatusForVendorAndRequiredPurposes: (vendorId: string): Promise<boolean> => RNDidomi.getUserConsentStatusForVendorAndRequiredPurposes(vendorId),
282
290
 
@@ -285,8 +293,8 @@ export const Didomi = {
285
293
  * @param purposeId: purpose ID.
286
294
  * @returns: LI status of a purpose.
287
295
  * @deprecated use {@link #getUserStatus()} instead. Search the purposeId in
288
- * getUserStatus().getPurposes().getLegitimateInterest().getEnabled() or
289
- * getUserStatus().getPurposes().getLegitimateInterest().getDisabled().
296
+ * getUserStatus().purposes.consent.enabled or
297
+ * getUserStatus().purposes.consent.enabled.
290
298
  */
291
299
  getUserLegitimateInterestStatusForPurpose: (purposeId: string): Promise<boolean> => RNDidomi.getUserLegitimateInterestStatusForPurpose(purposeId),
292
300
 
@@ -295,8 +303,8 @@ export const Didomi = {
295
303
  * @param vendorId: vendor ID.
296
304
  * @returns: LI status of a vendor.
297
305
  * @deprecated use {@link #getUserStatus()} instead. Search the vendorId in
298
- * getUserStatus().getVendors().getLegitimateInterest().getEnabled() or
299
- * getUserStatus().getVendors().getLegitimateInterest().getDisabled().
306
+ * getUserStatus().vendors.legitimate_interest.enabled or
307
+ * getUserStatus().vendors.legitimate_interest.disabled.
300
308
  */
301
309
  getUserLegitimateInterestForVendor: (vendorId: string): Promise<boolean> => RNDidomi.getUserLegitimateInterestStatusForVendor(vendorId),
302
310
 
@@ -305,8 +313,8 @@ export const Didomi = {
305
313
  * @param vendorId: vendor ID.
306
314
  * @returns: The user LI status corresponding to the specified vendor and all its required purposes.
307
315
  * @deprecated use {@link #getUserStatus()} instead. Search the purposeId in
308
- * getUserStatus().getVendors().getGlobalLegitimateInterest().getEnabled() or
309
- * getUserStatus().getVendors().getGlobalLegitimateInterest().getDisabled().
316
+ * getUserStatus().vendors.global_legitimate_interest.enabled or
317
+ * getUserStatus().vendors.global_legitimate_interest.disabled.
310
318
  */
311
319
  getUserLegitimateInterestStatusForVendorAndRequiredPurposes: (vendorId: string): boolean => RNDidomi.getUserLegitimateInterestStatusForVendorAndRequiredPurposes(vendorId),
312
320
 
@@ -321,8 +329,8 @@ export const Didomi = {
321
329
  * @param vendorId: vendor ID.
322
330
  * @returns: status that represents both consent and legitimate interest status of a vendor.
323
331
  * @deprecated use {@link #getUserStatus()} instead. Search the vendorId in
324
- * getUserStatus().getVendors().getGlobal().getEnabled() or
325
- * getUserStatus().getVendors().getGlobal().getDisabled().
332
+ * getUserStatus().vendors.global.enabled or
333
+ * getUserStatus().vendors.global.disabled.
326
334
  */
327
335
  getUserStatusForVendor: (vendorId: string): Promise<boolean> => RNDidomi.getUserStatusForVendor(vendorId),
328
336
 
@@ -331,7 +339,7 @@ export const Didomi = {
331
339
  * @param vendorId: vendor ID used in the search.
332
340
  * @returns: vendor found in the array.
333
341
  */
334
- getVendor: (vendorId: string): Promise<any> => RNDidomi.getVendor(vendorId),
342
+ getVendor: (vendorId: string): Promise<Vendor> => RNDidomi.getVendor(vendorId),
335
343
 
336
344
  /**
337
345
  * Hide the notice if it is currently displayed
@@ -1,4 +1,4 @@
1
- import { NativeModules, NativeEventEmitter } from 'react-native';
1
+ import { NativeModules, NativeEventEmitter, EmitterSubscription } from 'react-native';
2
2
  import { DidomiEventType } from './DidomiTypes';
3
3
 
4
4
  const { Didomi: RNDidomi } = NativeModules;
@@ -58,32 +58,42 @@ export const DidomiListener = {
58
58
  }
59
59
  },
60
60
 
61
- onReady: (): Promise<void> => {
61
+ setOnReadyListener: (): Promise<void> => {
62
62
  return new Promise<void>((resolve) => {
63
+ let subscription: EmitterSubscription;
63
64
  const listener = (_event: any) => {
64
65
  resolve();
65
- DidomiListener.eventEmitter.removeListener(
66
- InternalEventType.READY_CALLBACK,
67
- listener
68
- );
66
+ if (subscription) {
67
+ subscription.remove();
68
+ } else if ('removeListener' in DidomiListener.eventEmitter) {
69
+ DidomiListener.eventEmitter.removeListener(
70
+ InternalEventType.READY_CALLBACK,
71
+ listener
72
+ );
73
+ }
69
74
  };
70
- DidomiListener.eventEmitter.addListener(
75
+ subscription = DidomiListener.eventEmitter.addListener(
71
76
  InternalEventType.READY_CALLBACK,
72
77
  listener
73
78
  );
74
79
  });
75
80
  },
76
81
 
77
- onError: (): Promise<any> => {
78
- return new Promise<any>((resolve) => {
82
+ setOnErrorListener: (): Promise<void> => {
83
+ return new Promise<void>((resolve) => {
84
+ let subscription: EmitterSubscription;
79
85
  const listener = (_event: any) => {
80
86
  resolve(_event);
81
- DidomiListener.eventEmitter.removeListener(
82
- InternalEventType.ERROR_CALLBACK,
83
- listener
84
- );
87
+ if (subscription) {
88
+ subscription.remove();
89
+ } else if ('removeListener' in DidomiListener.eventEmitter) {
90
+ DidomiListener.eventEmitter.removeListener(
91
+ InternalEventType.ERROR_CALLBACK,
92
+ listener
93
+ );
94
+ }
85
95
  };
86
- DidomiListener.eventEmitter.addListener(
96
+ subscription = DidomiListener.eventEmitter.addListener(
87
97
  InternalEventType.ERROR_CALLBACK,
88
98
  listener
89
99
  );
@@ -37,14 +37,19 @@ export enum DidomiEventType {
37
37
 
38
38
  export interface Vendor {
39
39
  id: string;
40
+ iabId: string
40
41
  name: string;
41
- privacyPolicyUrl: string;
42
+ policyUrl: string;
42
43
  namespace: string;
43
44
  namespaces: VendorNamespaces;
44
45
  iabVendor: boolean;
45
- purposeId: string[];
46
+ purposeIds: string[];
47
+ flexiblePurposeIds: string[];
48
+ specialPurposeIds: string[];
46
49
  legIntPurposeIds: string[];
47
- essentialPurposeIds: string[];
50
+ specialFeatureIds: string[];
51
+ cookieMaxAgeSeconds: number
52
+ usesNonCookieAccess: boolean;
48
53
  }
49
54
 
50
55
  export interface VendorNamespaces {
@@ -67,11 +72,11 @@ export interface Purpose {
67
72
 
68
73
  export interface PurposeCategory {
69
74
  id: string;
70
- idpurposeId: string;
75
+ purposeId: string;
71
76
  icon: string;
72
77
  type: string;
73
78
  name: Map<string>;
74
- namedescription: Map<string>;
79
+ description: Map<string>;
75
80
  children: PurposeCategory[];
76
81
  }
77
82
 
@@ -83,27 +88,27 @@ export interface Map<T> {
83
88
  export interface UserStatus {
84
89
  purposes: UserStatusPurposes;
85
90
  vendors: UserStatusVendors;
86
- userId: string;
91
+ user_id: string;
87
92
  created: string;
88
93
  updated: string;
89
- consentString: string;
90
- additionalConsent: string;
94
+ consent_string: string;
95
+ additional_consent: string;
91
96
  regulation: string;
92
97
  }
93
98
 
94
99
  export interface UserStatusPurposes {
95
100
  global: UserStatusIds;
96
101
  consent: UserStatusIds;
97
- legitimateInterest: UserStatusIds;
102
+ legitimate_interest: UserStatusIds;
98
103
  essential: UserStatusIds;
99
104
  }
100
105
 
101
106
  export interface UserStatusVendors {
102
107
  global: UserStatusIds;
103
- globalConsent: UserStatusIds;
104
- globalLegitimateInterest: UserStatusIds;
108
+ global_consent: UserStatusIds;
109
+ global_legitimate_interest: UserStatusIds;
105
110
  consent: UserStatusIds;
106
- legitimateInterest: UserStatusIds;
111
+ legitimate_interest: UserStatusIds;
107
112
  }
108
113
 
109
114
  export interface UserStatusIds {