@didomi/react-native 1.5.0 → 1.8.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.
@@ -6,14 +6,20 @@ import AppTrackingTransparency
6
6
  class RNDidomi: RCTEventEmitter {
7
7
 
8
8
  public static var initialized = false
9
- let didomiEventListener = EventListener()
10
-
9
+ var didomiEventListener: EventListener
10
+
11
+ override init() {
12
+ didomiEventListener = EventListener()
13
+ super.init()
14
+ initEventListener()
15
+ }
16
+
11
17
  override static func requiresMainQueueSetup() -> Bool {
12
18
  return true
13
19
  }
14
-
15
- @objc(initialize:userAgentVersion:apiKey:localConfigurationPath:remoteConfigurationURL:providerId:disableDidomiRemoteConfig:languageCode:noticeId:)
16
- func initialize(userAgentName: String, userAgentVersion: String, apiKey: String, localConfigurationPath: String?, remoteConfigurationURL: String?, providerId: String?, disableDidomiRemoteConfig: Bool = false, languageCode: String? = nil, noticeId: String? = nil) {
20
+
21
+ @objc(initialize:userAgentVersion:apiKey:localConfigurationPath:remoteConfigurationURL:providerId:disableDidomiRemoteConfig:languageCode:noticeId:resolve:reject:)
22
+ func initialize(userAgentName: String, userAgentVersion: String, apiKey: String, localConfigurationPath: String?, remoteConfigurationURL: String?, providerId: String?, disableDidomiRemoteConfig: Bool = false, languageCode: String? = nil, noticeId: String? = nil, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
17
23
  onReady()
18
24
  onError()
19
25
  if !RNDidomi.initialized {
@@ -32,285 +38,288 @@ class RNDidomi: RCTEventEmitter {
32
38
  ))
33
39
  }
34
40
  RNDidomi.initialized = true
41
+ resolve(0)
35
42
  }
36
43
 
37
44
  private func onReady() {
38
45
  Didomi.shared.onReady {
39
- self.sendEvent(withName: "on_ready_callback", body: nil)
46
+ self.dispatchEvent(withName: "on_ready_callback", body: nil)
40
47
  }
41
48
  }
42
49
 
43
50
  private func onError() {
44
51
  Didomi.shared.onError { error in
45
- self.sendEvent(withName: "on_error_callback", body: error.descriptionText)
52
+ self.dispatchEvent(withName: "on_error_callback", body: error.descriptionText)
46
53
  }
47
54
  }
48
55
 
49
56
  @objc(getQueryStringForWebView:reject:)
50
- func getQueryStringForWebView(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
57
+ func getQueryStringForWebView(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
51
58
  resolve(Didomi.shared.getQueryStringForWebView())
52
59
  }
53
60
 
54
61
  @objc(setUserConsentStatus:disabledPurposeIds:enabledVendorIds:disabledVendorIds:resolve:reject:)
55
- func setUserConsentStatus(enabledPurposeIds: Set<String>, disabledPurposeIds: Set<String>, enabledVendorIds: Set<String>, disabledVendorIds: Set<String>, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
62
+ func setUserConsentStatus(enabledPurposeIds: Set<String>, disabledPurposeIds: Set<String>, enabledVendorIds: Set<String>, disabledVendorIds: Set<String>, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
56
63
  resolve(Didomi.shared.setUserConsentStatus(enabledPurposeIds: Set(enabledPurposeIds), disabledPurposeIds: Set(disabledPurposeIds), enabledVendorIds: Set(enabledVendorIds), disabledVendorIds: Set(disabledVendorIds)))
57
64
  }
58
65
 
59
66
  @objc(isConsentRequired:reject:)
60
- func isConsentRequired(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
67
+ func isConsentRequired(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
61
68
  resolve(Didomi.shared.isConsentRequired())
62
69
  }
63
70
 
64
71
  @objc(isUserConsentStatusPartial:reject:)
65
- func isUserConsentStatusPartial(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
72
+ func isUserConsentStatusPartial(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
66
73
  resolve(Didomi.shared.isUserConsentStatusPartial())
67
74
  }
68
75
 
69
76
  @objc(isUserLegitimateInterestStatusPartial:reject:)
70
- func isUserLegitimateInterestStatusPartial(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
77
+ func isUserLegitimateInterestStatusPartial(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
71
78
  resolve(Didomi.shared.isUserLegitimateInterestStatusPartial())
72
79
  }
73
80
 
74
81
  @objc(getUserConsentStatusForPurpose:resolve:reject:)
75
- func getUserConsentStatusForPurpose(purposeId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
82
+ func getUserConsentStatusForPurpose(purposeId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
76
83
  let consentStatus = Didomi.shared.getUserConsentStatusForPurpose(purposeId: purposeId)
77
84
  resolve(consentStatus.rawValue.consentStatusBool)
78
85
  }
79
86
 
80
87
  @objc(getUserLegitimateInterestStatusForPurpose:resolve:reject:)
81
- func getUserLegitimateInterestStatusForPurpose(purposeId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
88
+ func getUserLegitimateInterestStatusForPurpose(purposeId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
82
89
  let consentStatus = Didomi.shared.getUserLegitimateInterestStatusForPurpose(purposeId: purposeId)
83
90
  resolve(consentStatus.rawValue.consentStatusBool)
84
91
  }
85
92
 
86
93
  @objc(getUserStatus:reject:)
87
- func getUserStatus(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
94
+ func getUserStatus(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
88
95
  let encoder = JSONEncoder()
89
96
  let userStatus = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getUserStatus())) as? [String: Any]
90
97
  resolve(userStatus)
91
98
  }
92
99
 
93
100
  @objc(getUserStatusForVendor:resolve:reject:)
94
- func getUserStatusForVendor(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
101
+ func getUserStatusForVendor(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
95
102
  let userStatus = Didomi.shared.getUserStatusForVendor(vendorId: vendorId)
96
103
  resolve(userStatus.rawValue.consentStatusBool)
97
104
  }
98
105
 
99
106
  @objc(getUserConsentStatusForVendor:resolve:reject:)
100
- func getUserConsentStatusForVendor(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
107
+ func getUserConsentStatusForVendor(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
101
108
  let consentStatus = Didomi.shared.getUserConsentStatusForVendor(vendorId: vendorId)
102
109
  resolve(consentStatus.rawValue.consentStatusBool)
103
110
  }
104
111
 
105
112
  @objc(getUserLegitimateInterestStatusForVendor:resolve:reject:)
106
- func getUserLegitimateInterestStatusForPurpose(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
113
+ func getUserLegitimateInterestStatusForPurpose(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
107
114
  let consentStatus = Didomi.shared.getUserLegitimateInterestStatusForVendor(vendorId: vendorId)
108
115
  resolve(consentStatus.rawValue.consentStatusBool)
109
116
  }
110
117
 
111
118
  @objc(getUserConsentStatusForVendorAndRequiredPurposes:resolve:reject:)
112
- func getUserConsentStatusForVendorAndRequiredPurposes(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
119
+ func getUserConsentStatusForVendorAndRequiredPurposes(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
113
120
  let consentStatus = Didomi.shared.getUserConsentStatusForVendorAndRequiredPurposes(vendorId: vendorId)
114
121
  resolve(consentStatus.rawValue.consentStatusBool)
115
122
  }
116
123
 
117
124
  @objc(getUserLegitimateInterestStatusForVendorAndRequiredPurposes:resolve:reject:)
118
- func getUserLegitimateInterestStatusForVendorAndRequiredPurposes(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
125
+ func getUserLegitimateInterestStatusForVendorAndRequiredPurposes(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
119
126
  let consentStatus = Didomi.shared.getUserLegitimateInterestStatusForVendorAndRequiredPurposes(vendorId: vendorId)
120
127
  resolve(consentStatus.rawValue.consentStatusBool)
121
128
  }
122
129
 
123
130
  @objc(setUserStatus:purposesLIStatus:vendorsConsentStatus:vendorsLIStatus:resolve:reject:)
124
- func setUserStatus(purposesConsentStatus: Bool, purposesLIStatus: Bool, vendorsConsentStatus: Bool, vendorsLIStatus: Bool, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
131
+ func setUserStatus(purposesConsentStatus: Bool, purposesLIStatus: Bool, vendorsConsentStatus: Bool, vendorsLIStatus: Bool, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
125
132
  resolve(Didomi.shared.setUserStatus(purposesConsentStatus: purposesConsentStatus, purposesLIStatus: purposesLIStatus, vendorsConsentStatus: vendorsConsentStatus, vendorsLIStatus: vendorsLIStatus))
126
133
  }
127
134
 
128
135
  @objc(setUserStatusSets:disabledConsentPurposeIds:enabledLIPurposeIds:disabledLIPurposeIds:enabledConsentVendorIds:disabledConsentVendorIds:enabledLIVendorIds:disabledLIVendorIds:resolve:reject:)
129
- func setUserStatusSets(enabledConsentPurposeIds: Set<String>, disabledConsentPurposeIds: Set<String>, enabledLIPurposeIds: Set<String>, disabledLIPurposeIds: Set<String>, enabledConsentVendorIds: Set<String>, disabledConsentVendorIds: Set<String>, enabledLIVendorIds: Set<String>, disabledLIVendorIds: Set<String>, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
136
+ func setUserStatusSets(enabledConsentPurposeIds: Set<String>, disabledConsentPurposeIds: Set<String>, enabledLIPurposeIds: Set<String>, disabledLIPurposeIds: Set<String>, enabledConsentVendorIds: Set<String>, disabledConsentVendorIds: Set<String>, enabledLIVendorIds: Set<String>, disabledLIVendorIds: Set<String>, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
130
137
  resolve(Didomi.shared.setUserStatus(enabledConsentPurposeIds: Set(enabledConsentPurposeIds), disabledConsentPurposeIds: Set(disabledConsentPurposeIds), enabledLIPurposeIds: Set(enabledLIPurposeIds), disabledLIPurposeIds: Set(disabledLIPurposeIds), enabledConsentVendorIds: Set(enabledConsentVendorIds), disabledConsentVendorIds: Set(disabledConsentVendorIds), enabledLIVendorIds: Set(enabledLIVendorIds), disabledLIVendorIds: Set(disabledLIVendorIds)))
131
138
  }
132
139
 
133
140
  @objc(setUserAgreeToAll:reject:)
134
- func setUserAgreeToAll(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
141
+ func setUserAgreeToAll(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
135
142
  resolve(Didomi.shared.setUserAgreeToAll())
136
143
  }
137
-
144
+
138
145
  @objc(setUserDisagreeToAll:reject:)
139
- func setUserDisagreeToAll(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
146
+ func setUserDisagreeToAll(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
140
147
  resolve(Didomi.shared.setUserDisagreeToAll())
141
148
  }
142
-
143
- @objc(reset)
144
- func reset() {
149
+
150
+ @objc(reset:reject:)
151
+ func reset(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
145
152
  Didomi.shared.reset()
153
+ resolve(0)
146
154
  }
147
-
155
+
148
156
  @objc(getRequiredPurposeIds:reject:)
149
- func getRequiredPurposeIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
157
+ func getRequiredPurposeIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
150
158
  resolve(Array(Didomi.shared.getRequiredPurposeIds()))
151
159
  }
152
-
160
+
153
161
  @objc(getRequiredVendorIds:reject:)
154
- func getRequiredVendorIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
162
+ func getRequiredVendorIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
155
163
  resolve(Array(Didomi.shared.getRequiredVendorIds()))
156
164
  }
157
-
158
-
165
+
159
166
  @objc(isReady:reject:)
160
- func isReady(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
167
+ func isReady(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
161
168
  resolve(Didomi.shared.isReady())
162
169
  }
163
-
170
+
164
171
  @objc(getRequiredPurposes:reject:)
165
- func getRequiredPurposes(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
172
+ func getRequiredPurposes(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
166
173
  let encoder = JSONEncoder()
167
174
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getRequiredPurposes())) as? [[String: Any]]
168
175
  resolve(purposes)
169
176
  }
170
-
177
+
171
178
  @objc(getRequiredVendors:reject:)
172
- func getRequiredVendors(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
179
+ func getRequiredVendors(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
173
180
  let encoder = JSONEncoder()
174
181
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getRequiredVendors())) as? [[String: Any]]
175
182
  resolve(vendors)
176
183
  }
177
184
 
178
185
  @objc(getEnabledPurposes:reject:)
179
- func getEnabledPurposes(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
186
+ func getEnabledPurposes(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
180
187
  let encoder = JSONEncoder()
181
188
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getEnabledPurposes())) as? [[String: Any]]
182
189
  resolve(purposes)
183
190
  }
184
191
 
185
-
186
192
  @objc(getEnabledPurposeIds:reject:)
187
- func getEnabledPurposeIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
193
+ func getEnabledPurposeIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
188
194
  resolve(Array(Didomi.shared.getEnabledPurposeIds()))
189
195
  }
190
196
 
191
197
  @objc(getDisabledPurposes:reject:)
192
- func getDisabledPurposes(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
198
+ func getDisabledPurposes(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
193
199
  let encoder = JSONEncoder()
194
200
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getDisabledPurposes())) as? [[String: Any]]
195
201
  resolve(purposes)
196
202
  }
197
203
 
198
204
  @objc(getDisabledPurposeIds:reject:)
199
- func getDisabledPurposeIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
205
+ func getDisabledPurposeIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
200
206
  resolve(Array(Didomi.shared.getDisabledPurposeIds()))
201
207
  }
202
208
 
203
209
  @objc(getEnabledVendors:reject:)
204
- func getEnabledVendors(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
210
+ func getEnabledVendors(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
205
211
  let encoder = JSONEncoder()
206
212
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getEnabledVendors())) as? [[String: Any]]
207
213
  resolve(vendors)
208
214
  }
209
215
 
210
216
  @objc(getEnabledVendorIds:reject:)
211
- func getEnabledVendorIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
217
+ func getEnabledVendorIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
212
218
  resolve(Array(Didomi.shared.getEnabledVendorIds()))
213
219
  }
214
220
 
215
221
  @objc(getDisabledVendors:reject:)
216
- func getDisabledVendors(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
222
+ func getDisabledVendors(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
217
223
  let encoder = JSONEncoder()
218
224
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getDisabledVendors())) as? [[String: Any]]
219
225
  resolve(vendors)
220
226
  }
221
227
 
222
228
  @objc(getDisabledVendorIds:reject:)
223
- func getDisabledVendorIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
229
+ func getDisabledVendorIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
224
230
  resolve(Array(Didomi.shared.getDisabledVendorIds()))
225
231
  }
226
232
 
227
233
  @objc(getPurpose:resolve:reject:)
228
- func getPurpose(purposeId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
234
+ func getPurpose(purposeId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
229
235
  let encoder = JSONEncoder()
230
236
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getPurpose(purposeId: purposeId))) as? [String: Any]
231
237
  resolve(purposes)
232
238
  }
233
239
 
234
240
  @objc(getVendor:resolve:reject:)
235
- func getVendor(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
241
+ func getVendor(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
236
242
  let encoder = JSONEncoder()
237
243
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getVendor(vendorId: vendorId))) as? [String: Any]
238
244
  resolve(vendors)
239
245
  }
240
246
 
241
247
  @objc(getJavaScriptForWebView:resolve:reject:)
242
- func getJavaScriptForWebView(_ extra: String? = "", resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
248
+ func getJavaScriptForWebView(_ extra: String? = "", resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
243
249
  if let extra = extra {
244
250
  resolve(Didomi.shared.getJavaScriptForWebView(extra: extra))
245
251
  } else {
246
252
  resolve(Didomi.shared.getJavaScriptForWebView())
247
253
  }
248
254
  }
249
-
250
- @objc(updateSelectedLanguage:)
251
- func updateSelectedLanguage(languageCode: String) {
255
+
256
+ @objc(updateSelectedLanguage:resolve:reject:)
257
+ func updateSelectedLanguage(languageCode: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
252
258
  Didomi.shared.updateSelectedLanguage(languageCode: languageCode)
259
+ resolve(0)
253
260
  }
254
261
 
255
-
256
262
  // MARK: ViewProviderDelegate
257
263
 
258
264
  @objc(getNoticeViewController:resolve:reject:)
259
- dynamic func getNoticeViewController(position: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
265
+ dynamic func getNoticeViewController(position: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
260
266
  resolve(Didomi.shared.getNoticeViewController(position: position))
261
267
  }
262
268
 
263
269
  @objc(getPreferencesViewController:reject:)
264
- dynamic func getPreferencesViewController(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
270
+ dynamic func getPreferencesViewController(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
265
271
  resolve(Didomi.shared.getPreferencesViewController())
266
272
  }
267
273
 
268
-
269
274
  // MARK: Didomi extension
270
-
271
- @objc(setupUI)
272
- dynamic func setupUI() {
273
-
275
+
276
+ @objc(setupUI:reject:)
277
+ dynamic func setupUI(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
278
+
274
279
  DispatchQueue.main.async {
275
280
  if let containerController = RCTPresentedViewController() {
276
281
  Didomi.shared.setupUI(containerController: containerController)
277
282
  }
278
283
  }
284
+ resolve(0)
279
285
  }
280
-
281
- @objc(forceShowNotice)
282
- dynamic func forceShowNotice() {
286
+
287
+ @objc(forceShowNotice:reject:)
288
+ dynamic func forceShowNotice(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
283
289
  DispatchQueue.main.async {
284
290
  Didomi.shared.forceShowNotice()
285
291
  }
292
+ resolve(0)
286
293
  }
287
-
288
- @objc(showNotice)
289
- dynamic func showNotice() {
294
+
295
+ @objc(showNotice:reject:)
296
+ dynamic func showNotice(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
290
297
  DispatchQueue.main.async {
291
298
  Didomi.shared.showNotice()
292
299
  }
300
+ resolve(0)
293
301
  }
294
-
295
- @objc(hideNotice)
296
- dynamic func hideNotice() {
302
+
303
+ @objc(hideNotice:reject:)
304
+ dynamic func hideNotice(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
297
305
  DispatchQueue.main.async {
298
306
  Didomi.shared.hideNotice()
299
307
  }
308
+ resolve(0)
300
309
  }
301
310
 
302
311
  @objc(isNoticeVisible:reject:)
303
- dynamic func isNoticeVisible(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
312
+ dynamic func isNoticeVisible(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
304
313
  resolve(Didomi.shared.isNoticeVisible())
305
314
  }
306
315
 
307
316
  @objc(shouldConsentBeCollected:reject:)
308
- dynamic func shouldConsentBeCollected(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
317
+ dynamic func shouldConsentBeCollected(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
309
318
  resolve(Didomi.shared.shouldConsentBeCollected())
310
319
  }
311
-
312
- @objc(showPreferences:)
313
- dynamic func showPreferences(view: String?) {
320
+
321
+ @objc(showPreferences:resolve:reject:)
322
+ dynamic func showPreferences(view: String?, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
314
323
  if let containerController = RCTPresentedViewController(){
315
324
  if view?.lowercased() == "vendors"{
316
325
  DispatchQueue.main.async {
@@ -323,33 +332,35 @@ class RNDidomi: RCTEventEmitter {
323
332
  }
324
333
  }
325
334
  }
335
+ resolve(0)
326
336
  }
327
-
328
- @objc(hidePreferences)
329
- dynamic func hidePreferences() {
337
+
338
+ @objc(hidePreferences:reject:)
339
+ dynamic func hidePreferences(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
330
340
  DispatchQueue.main.async {
331
341
  Didomi.shared.hidePreferences()
332
342
  }
343
+ resolve(0)
333
344
  }
334
345
 
335
346
  @objc(isPreferencesVisible:reject:)
336
- dynamic func isPreferencesVisible(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
347
+ dynamic func isPreferencesVisible(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
337
348
  resolve(Didomi.shared.isPreferencesVisible())
338
349
  }
339
350
 
340
351
  @objc(getTranslatedText:resolve:reject:)
341
- dynamic func getTranslatedText(key: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
352
+ dynamic func getTranslatedText(key: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
342
353
  resolve(Didomi.shared.getTranslatedText(key: key))
343
354
  }
344
355
 
345
356
  @objc(getText:resolve:reject:)
346
- dynamic func getText(key: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
357
+ dynamic func getText(key: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
347
358
  let text = Didomi.shared.getText(key: key)
348
359
  resolve(text)
349
360
  }
350
-
351
- @objc(setLogLevel:)
352
- dynamic func setLogLevel(minLevel: UInt8) {
361
+
362
+ @objc(setLogLevel:resolve:reject:)
363
+ dynamic func setLogLevel(minLevel: UInt8, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
353
364
  var level: UInt8
354
365
 
355
366
  switch minLevel {
@@ -366,25 +377,180 @@ class RNDidomi: RCTEventEmitter {
366
377
  }
367
378
 
368
379
  Didomi.shared.setLogLevel(minLevel: level)
380
+ resolve(0)
369
381
  }
370
-
371
- @objc(setUser:)
372
- dynamic func setUser(id: String) {
373
- Didomi.shared.setUser(id: id)
382
+
383
+ @objc(clearUser:reject:)
384
+ func clearUser(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
385
+ Didomi.shared.clearUser()
386
+ resolve(0)
374
387
  }
375
-
376
- @objc(setUser:algorithm:secretId:salt:digest:)
377
- dynamic func setUser(id: String, algorithm: String, secretId: String, salt: String?, digest: String) {
378
- Didomi.shared.setUser(id: id, algorithm: algorithm, secretId: secretId, salt: salt, digest: digest)
388
+
389
+ @objc(setUser:algorithm:secretId:salt:digest:resolve:reject:)
390
+ dynamic func setUser(id: String, algorithm: String?, secretId: String?, salt: String?, digest: String?, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
391
+ if let algorithm = algorithm, let secretId = secretId, let digest = digest {
392
+ Didomi.shared.setUser(id: id, algorithm: algorithm, secretId: secretId, salt: salt, digest: digest)
393
+ } else {
394
+ Didomi.shared.setUser(id: id)
395
+ }
396
+ resolve(0)
379
397
  }
380
-
398
+
399
+ @objc(setUserAndSetupUI:resolve:reject:)
400
+ dynamic func setUserAndSetupUI(id: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
401
+ DispatchQueue.main.async {
402
+ if let containerController = RCTPresentedViewController() {
403
+ Didomi.shared.setUser(id: id, containerController: containerController)
404
+ } else {
405
+ Didomi.shared.setUser(id: id)
406
+ }
407
+ }
408
+ resolve(0)
409
+ }
410
+
411
+ @objc(setUserWithHashAuth:algorithm:secretId:digest:salt:resolve:reject:)
412
+ dynamic func setUserWithHashAuth(id: String, algorithm: String, secretId: String, digest: String, salt: String?, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
413
+ Didomi.shared.setUser(
414
+ userAuthParams: UserAuthWithHashParams(
415
+ id: id,
416
+ algorithm: algorithm,
417
+ secretID: secretId,
418
+ digest: digest,
419
+ salt: salt))
420
+ resolve(0)
421
+ }
422
+
423
+
424
+ @objc(setUserWithHashAuthAndSetupUI:algorithm:secretId:digest:salt:resolve:reject:)
425
+ dynamic func setUserWithHashAuthAndSetupUI(id: String, algorithm: String, secretId: String, digest: String, salt: String?, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
426
+ let userAuthParams = UserAuthWithHashParams(
427
+ id: id,
428
+ algorithm: algorithm,
429
+ secretID: secretId,
430
+ digest: digest,
431
+ salt: salt
432
+ )
433
+ DispatchQueue.main.async {
434
+ if let containerController = RCTPresentedViewController() {
435
+ Didomi.shared.setUser(
436
+ userAuthParams: userAuthParams,
437
+ containerController: containerController
438
+ )
439
+ } else {
440
+ Didomi.shared.setUser(userAuthParams: userAuthParams)
441
+ }
442
+ }
443
+ resolve(0)
444
+ }
445
+
446
+ @objc(setUserWithHashAuthWithExpiration:algorithm:secretId:digest:salt:expiration:resolve:reject:)
447
+ dynamic func setUserWithHashAuthWithExpiration(id: String, algorithm: String, secretId: String, digest: String, salt: String?, expiration: Double, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
448
+ Didomi.shared.setUser(
449
+ userAuthParams: UserAuthWithHashParams(
450
+ id: id,
451
+ algorithm: algorithm,
452
+ secretID: secretId,
453
+ digest: digest,
454
+ salt: salt,
455
+ legacyExpiration: expiration))
456
+ resolve(0)
457
+ }
458
+
459
+ @objc(setUserWithHashAuthWithExpirationAndSetupUI:algorithm:secretId:digest:salt:expiration:resolve:reject:)
460
+ dynamic func setUserWithHashAuthWithExpirationAndSetupUI(id: String, algorithm: String, secretId: String, digest: String, salt: String?, expiration: Double, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
461
+ let userAuthParams = UserAuthWithHashParams(
462
+ id: id,
463
+ algorithm: algorithm,
464
+ secretID: secretId,
465
+ digest: digest,
466
+ salt: salt,
467
+ legacyExpiration: expiration
468
+ )
469
+ DispatchQueue.main.async {
470
+ if let containerController = RCTPresentedViewController() {
471
+ Didomi.shared.setUser(
472
+ userAuthParams: userAuthParams,
473
+ containerController: containerController
474
+ )
475
+ } else {
476
+ Didomi.shared.setUser(userAuthParams: userAuthParams)
477
+ }
478
+ }
479
+ resolve(0)
480
+ }
481
+
482
+ @objc(setUserWithEncryptionAuth:algorithm:secretId:initializationVector:resolve:reject:)
483
+ dynamic func setUserWithEncryptionAuth(id: String, algorithm: String, secretId: String, initializationVector: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
484
+ Didomi.shared.setUser(
485
+ userAuthParams: UserAuthWithEncryptionParams(
486
+ id: id,
487
+ algorithm: algorithm,
488
+ secretID: secretId,
489
+ initializationVector: initializationVector))
490
+ resolve(0)
491
+ }
492
+
493
+ @objc(setUserWithEncryptionAuthAndSetupUI:algorithm:secretId:initializationVector:resolve:reject:)
494
+ dynamic func setUserWithEncryptionAuthAndSetupUI(id: String, algorithm: String, secretId: String, initializationVector: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
495
+ let userAuthParams = UserAuthWithEncryptionParams(
496
+ id: id,
497
+ algorithm: algorithm,
498
+ secretID: secretId,
499
+ initializationVector: initializationVector
500
+ )
501
+ DispatchQueue.main.async {
502
+ if let containerController = RCTPresentedViewController() {
503
+ Didomi.shared.setUser(
504
+ userAuthParams: userAuthParams,
505
+ containerController: containerController
506
+ )
507
+ } else {
508
+ Didomi.shared.setUser(userAuthParams: userAuthParams)
509
+ }
510
+ }
511
+ resolve(0)
512
+ }
513
+
514
+ @objc(setUserWithEncryptionAuthWithExpiration:algorithm:secretId:initializationVector:expiration:resolve:reject:)
515
+ dynamic func setUserWithEncryptionAuthWithExpiration(id: String, algorithm: String, secretId: String, initializationVector: String, expiration: Double, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
516
+ Didomi.shared.setUser(
517
+ userAuthParams: UserAuthWithEncryptionParams(
518
+ id: id,
519
+ algorithm: algorithm,
520
+ secretID: secretId,
521
+ initializationVector: initializationVector,
522
+ legacyExpiration: expiration))
523
+ resolve(0)
524
+ }
525
+
526
+ @objc(setUserWithEncryptionAuthWithExpirationAndSetupUI:algorithm:secretId:initializationVector:expiration:resolve:reject:)
527
+ dynamic func setUserWithEncryptionAuthWithExpirationAndSetupUI(id: String, algorithm: String, secretId: String, initializationVector: String, expiration: Double, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
528
+ let userAuthParams = UserAuthWithEncryptionParams(
529
+ id: id,
530
+ algorithm: algorithm,
531
+ secretID: secretId,
532
+ initializationVector: initializationVector,
533
+ legacyExpiration: expiration
534
+ )
535
+ DispatchQueue.main.async {
536
+ if let containerController = RCTPresentedViewController() {
537
+ Didomi.shared.setUser(
538
+ userAuthParams: userAuthParams,
539
+ containerController: containerController
540
+ )
541
+ } else {
542
+ Didomi.shared.setUser(userAuthParams: userAuthParams)
543
+ }
544
+ }
545
+ resolve(0)
546
+ }
547
+
381
548
  @objc public enum Views : Int, RawRepresentable {
382
549
 
383
550
  case purposes = 0
384
551
 
385
552
  case vendors
386
553
  }
387
-
388
554
  }
389
555
 
390
556
  // MARK: Didomi Specific structs
@@ -487,135 +653,159 @@ extension RNDidomi {
487
653
  "on_preferences_click_vendor_agree",
488
654
  "on_preferences_click_vendor_disagree",
489
655
  "on_preferences_click_vendor_save_choices",
490
- "on_sync_done"
656
+ "on_sync_done",
657
+ "on_sync_error",
658
+ "on_language_updated",
659
+ "on_language_update_failed"
491
660
  ]
492
661
  }
662
+
663
+ private func initEventListener() {
493
664
 
494
-
495
- private func initEventListener(){
496
-
497
665
  didomiEventListener.onConsentChanged = { event in
498
- self.sendEvent(withName: "on_consent_changed", body:"")
666
+ self.dispatchEvent(withName: "on_consent_changed", body:"")
499
667
  }
500
668
 
501
669
  didomiEventListener.onReady = { event in
502
- self.sendEvent(withName: "on_ready", body: "")
670
+ self.dispatchEvent(withName: "on_ready", body: "")
503
671
  }
504
672
 
505
673
  didomiEventListener.onError = { event in
506
- self.sendEvent(withName: "on_error", body: "")
674
+ self.dispatchEvent(withName: "on_error", body: "")
507
675
  }
508
676
 
509
677
  didomiEventListener.onShowNotice = { event in
510
- self.sendEvent(withName: "on_show_notice", body: "")
678
+ self.dispatchEvent(withName: "on_show_notice", body: "")
511
679
  }
512
680
 
513
681
  didomiEventListener.onHideNotice = { event in
514
- self.sendEvent(withName: "on_hide_notice", body: "")
682
+ self.dispatchEvent(withName: "on_hide_notice", body: "")
515
683
  }
516
684
 
517
685
  didomiEventListener.onNoticeClickAgree = { event in
518
- self.sendEvent(withName: "on_notice_click_agree", body: "")
686
+ self.dispatchEvent(withName: "on_notice_click_agree", body: "")
519
687
  }
520
688
 
521
689
  didomiEventListener.onNoticeClickDisagree = { event in
522
- self.sendEvent(withName: "on_notice_click_disagree", body: "")
690
+ self.dispatchEvent(withName: "on_notice_click_disagree", body: "")
523
691
  }
524
692
 
525
693
  didomiEventListener.onNoticeClickMoreInfo = { event in
526
- self.sendEvent(withName: "on_notice_click_more_info", body: "")
694
+ self.dispatchEvent(withName: "on_notice_click_more_info", body: "")
527
695
  }
528
-
696
+
529
697
  didomiEventListener.onNoticeClickViewVendors = { event in
530
- self.sendEvent(withName: "on_notice_click_view_vendors", body: "")
698
+ self.dispatchEvent(withName: "on_notice_click_view_vendors", body: "")
531
699
  }
532
-
700
+
533
701
  didomiEventListener.onNoticeClickPrivacyPolicy = { event in
534
- self.sendEvent(withName: "on_notice_click_privacy_policy", body: "")
702
+ self.dispatchEvent(withName: "on_notice_click_privacy_policy", body: "")
535
703
  }
536
704
 
537
705
  didomiEventListener.onShowPreferences = { event in
538
- self.sendEvent(withName: "on_show_preferences", body: "")
706
+ self.dispatchEvent(withName: "on_show_preferences", body: "")
539
707
  }
540
708
 
541
709
  didomiEventListener.onHidePreferences = { event in
542
- self.sendEvent(withName: "on_hide_preferences", body: "")
710
+ self.dispatchEvent(withName: "on_hide_preferences", body: "")
543
711
  }
544
712
 
545
713
  didomiEventListener.onPreferencesClickAgreeToAll = { event in
546
- self.sendEvent(withName: "on_preferences_click_agree_to_all", body: "")
714
+ self.dispatchEvent(withName: "on_preferences_click_agree_to_all", body: "")
547
715
  }
548
716
 
549
717
  didomiEventListener.onPreferencesClickDisagreeToAll = { event in
550
- self.sendEvent(withName: "on_preferences_click_disagree_to_all", body: "")
718
+ self.dispatchEvent(withName: "on_preferences_click_disagree_to_all", body: "")
551
719
  }
552
720
 
553
721
  didomiEventListener.onPreferencesClickAgreeToAllPurposes = { event in
554
- self.sendEvent(withName: "on_preferences_click_agree_to_all_purposes", body: "")
722
+ self.dispatchEvent(withName: "on_preferences_click_agree_to_all_purposes", body: "")
555
723
  }
556
724
 
557
725
  didomiEventListener.onPreferencesClickDisagreeToAllPurposes = { event in
558
- self.sendEvent(withName: "on_preferences_click_disagree_to_all_purposes", body: "")
726
+ self.dispatchEvent(withName: "on_preferences_click_disagree_to_all_purposes", body: "")
559
727
  }
560
728
 
561
729
  didomiEventListener.onPreferencesClickResetAllPurposes = { event in
562
- self.sendEvent(withName: "on_preferences_click_reset_all_purposes", body: "")
730
+ self.dispatchEvent(withName: "on_preferences_click_reset_all_purposes", body: "")
563
731
  }
564
732
 
565
733
  didomiEventListener.onPreferencesClickAgreeToAllVendors = { event in
566
- self.sendEvent(withName: "on_preferences_click_agree_to_all_vendors", body: "")
734
+ self.dispatchEvent(withName: "on_preferences_click_agree_to_all_vendors", body: "")
567
735
  }
568
736
 
569
737
  didomiEventListener.onPreferencesClickDisagreeToAllVendors = { event in
570
- self.sendEvent(withName: "on_preferences_click_disagree_to_all_vendors", body: "")
738
+ self.dispatchEvent(withName: "on_preferences_click_disagree_to_all_vendors", body: "")
571
739
  }
572
740
 
573
741
  didomiEventListener.onPreferencesClickPurposeAgree = { event, purposeId in
574
- self.sendEvent(withName: "on_preferences_click_purpose_agree", body: purposeId)
742
+ self.dispatchEvent(withName: "on_preferences_click_purpose_agree", body: purposeId)
575
743
  }
576
744
 
577
745
  didomiEventListener.onPreferencesClickPurposeDisagree = { event, purposeId in
578
- self.sendEvent(withName: "on_preferences_click_purpose_disagree", body: purposeId)
746
+ self.dispatchEvent(withName: "on_preferences_click_purpose_disagree", body: purposeId)
579
747
  }
580
748
 
581
749
  didomiEventListener.onPreferencesClickCategoryAgree = { event, categoryId in
582
- self.sendEvent(withName: "on_preferences_click_category_agree", body: categoryId)
750
+ self.dispatchEvent(withName: "on_preferences_click_category_agree", body: categoryId)
583
751
  }
584
752
 
585
753
  didomiEventListener.onPreferencesClickCategoryDisagree = { event, categoryId in
586
- self.sendEvent(withName: "on_preferences_click_category_disagree", body: categoryId)
754
+ self.dispatchEvent(withName: "on_preferences_click_category_disagree", body: categoryId)
587
755
  }
588
756
 
589
757
  didomiEventListener.onPreferencesClickViewVendors = { event in
590
- self.sendEvent(withName: "on_preferences_click_view_vendors", body: "")
758
+ self.dispatchEvent(withName: "on_preferences_click_view_vendors", body: "")
591
759
  }
592
760
 
593
761
  didomiEventListener.onPreferencesClickViewPurposes = { event in
594
- self.sendEvent(withName: "on_preferences_click_view_purposes", body: "")
762
+ self.dispatchEvent(withName: "on_preferences_click_view_purposes", body: "")
595
763
  }
596
764
 
597
765
  didomiEventListener.onPreferencesClickSaveChoices = { event in
598
- self.sendEvent(withName: "on_preferences_click_save_choices", body: "")
766
+ self.dispatchEvent(withName: "on_preferences_click_save_choices", body: "")
599
767
  }
600
768
 
601
769
  didomiEventListener.onPreferencesClickVendorAgree = { event, vendorId in
602
- self.sendEvent(withName: "on_preferences_click_vendor_agree", body: vendorId)
770
+ self.dispatchEvent(withName: "on_preferences_click_vendor_agree", body: vendorId)
603
771
  }
604
772
 
605
773
  didomiEventListener.onPreferencesClickVendorDisagree = { event, vendorId in
606
- self.sendEvent(withName: "on_preferences_click_vendor_disagree", body: vendorId)
774
+ self.dispatchEvent(withName: "on_preferences_click_vendor_disagree", body: vendorId)
607
775
  }
608
776
 
609
777
  didomiEventListener.onPreferencesClickVendorSaveChoices = { event in
610
- self.sendEvent(withName: "on_preferences_click_vendor_save_choices", body: "")
778
+ self.dispatchEvent(withName: "on_preferences_click_vendor_save_choices", body: "")
611
779
  }
612
780
 
613
781
  didomiEventListener.onSyncDone = { event, organizationUserId in
614
- self.sendEvent(withName: "on_sync_done", body: organizationUserId)
782
+ self.dispatchEvent(withName: "on_sync_done", body: organizationUserId)
783
+ }
784
+
785
+ didomiEventListener.onSyncError = { event, error in
786
+ self.dispatchEvent(withName: "on_sync_error", body: error)
615
787
  }
616
788
 
789
+ didomiEventListener.onLanguageUpdated = { event, languageCode in
790
+ self.dispatchEvent(withName: "on_language_updated", body: languageCode)
791
+ }
792
+
793
+ didomiEventListener.onLanguageUpdateFailed = { event, reason in
794
+ self.dispatchEvent(withName: "on_language_update_failed", body: reason)
795
+ }
796
+
617
797
  Didomi.shared.addEventListener(listener: didomiEventListener)
618
798
  }
799
+
800
+ /// Sends the specified event only if the react-native bridge is still valid
801
+ private func dispatchEvent(withName: String, body: String?) {
802
+ if self.bridge != nil {
803
+ self.sendEvent(withName: withName, body: body)
804
+ } else {
805
+ // Event emitter is not valid anymore, remove event listener
806
+ Didomi.shared.removeEventListener(listener: didomiEventListener)
807
+ }
808
+ }
619
809
  }
620
810
 
621
811
  extension Int {