@didomi/react-native 1.6.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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:androidTvNoticeId:androidTvEnabled: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, androidTvNoticeId: String? = nil, androidTvEnabled: Bool = false, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
17
23
  onReady()
18
24
  onError()
19
25
  if !RNDidomi.initialized {
@@ -32,281 +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
-
165
+
158
166
  @objc(isReady:reject:)
159
- func isReady(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
167
+ func isReady(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
160
168
  resolve(Didomi.shared.isReady())
161
169
  }
162
-
170
+
163
171
  @objc(getRequiredPurposes:reject:)
164
- func getRequiredPurposes(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
172
+ func getRequiredPurposes(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
165
173
  let encoder = JSONEncoder()
166
174
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getRequiredPurposes())) as? [[String: Any]]
167
175
  resolve(purposes)
168
176
  }
169
-
177
+
170
178
  @objc(getRequiredVendors:reject:)
171
- func getRequiredVendors(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
179
+ func getRequiredVendors(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
172
180
  let encoder = JSONEncoder()
173
181
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getRequiredVendors())) as? [[String: Any]]
174
182
  resolve(vendors)
175
183
  }
176
184
 
177
185
  @objc(getEnabledPurposes:reject:)
178
- func getEnabledPurposes(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
186
+ func getEnabledPurposes(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
179
187
  let encoder = JSONEncoder()
180
188
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getEnabledPurposes())) as? [[String: Any]]
181
189
  resolve(purposes)
182
190
  }
183
191
 
184
192
  @objc(getEnabledPurposeIds:reject:)
185
- func getEnabledPurposeIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
193
+ func getEnabledPurposeIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
186
194
  resolve(Array(Didomi.shared.getEnabledPurposeIds()))
187
195
  }
188
196
 
189
197
  @objc(getDisabledPurposes:reject:)
190
- func getDisabledPurposes(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
198
+ func getDisabledPurposes(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
191
199
  let encoder = JSONEncoder()
192
200
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getDisabledPurposes())) as? [[String: Any]]
193
201
  resolve(purposes)
194
202
  }
195
203
 
196
204
  @objc(getDisabledPurposeIds:reject:)
197
- func getDisabledPurposeIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
205
+ func getDisabledPurposeIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
198
206
  resolve(Array(Didomi.shared.getDisabledPurposeIds()))
199
207
  }
200
208
 
201
209
  @objc(getEnabledVendors:reject:)
202
- func getEnabledVendors(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
210
+ func getEnabledVendors(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
203
211
  let encoder = JSONEncoder()
204
212
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getEnabledVendors())) as? [[String: Any]]
205
213
  resolve(vendors)
206
214
  }
207
215
 
208
216
  @objc(getEnabledVendorIds:reject:)
209
- func getEnabledVendorIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
217
+ func getEnabledVendorIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
210
218
  resolve(Array(Didomi.shared.getEnabledVendorIds()))
211
219
  }
212
220
 
213
221
  @objc(getDisabledVendors:reject:)
214
- func getDisabledVendors(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
222
+ func getDisabledVendors(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
215
223
  let encoder = JSONEncoder()
216
224
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getDisabledVendors())) as? [[String: Any]]
217
225
  resolve(vendors)
218
226
  }
219
227
 
220
228
  @objc(getDisabledVendorIds:reject:)
221
- func getDisabledVendorIds(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
229
+ func getDisabledVendorIds(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
222
230
  resolve(Array(Didomi.shared.getDisabledVendorIds()))
223
231
  }
224
232
 
225
233
  @objc(getPurpose:resolve:reject:)
226
- func getPurpose(purposeId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
234
+ func getPurpose(purposeId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
227
235
  let encoder = JSONEncoder()
228
236
  let purposes = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getPurpose(purposeId: purposeId))) as? [String: Any]
229
237
  resolve(purposes)
230
238
  }
231
239
 
232
240
  @objc(getVendor:resolve:reject:)
233
- func getVendor(vendorId: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
241
+ func getVendor(vendorId: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
234
242
  let encoder = JSONEncoder()
235
243
  let vendors = try? JSONSerialization.jsonObject(with: encoder.encode(Didomi.shared.getVendor(vendorId: vendorId))) as? [String: Any]
236
244
  resolve(vendors)
237
245
  }
238
246
 
239
247
  @objc(getJavaScriptForWebView:resolve:reject:)
240
- func getJavaScriptForWebView(_ extra: String? = "", resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
248
+ func getJavaScriptForWebView(_ extra: String? = "", resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
241
249
  if let extra = extra {
242
250
  resolve(Didomi.shared.getJavaScriptForWebView(extra: extra))
243
251
  } else {
244
252
  resolve(Didomi.shared.getJavaScriptForWebView())
245
253
  }
246
254
  }
247
-
248
- @objc(updateSelectedLanguage:)
249
- func updateSelectedLanguage(languageCode: String) {
255
+
256
+ @objc(updateSelectedLanguage:resolve:reject:)
257
+ func updateSelectedLanguage(languageCode: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
250
258
  Didomi.shared.updateSelectedLanguage(languageCode: languageCode)
259
+ resolve(0)
251
260
  }
252
261
 
253
262
  // MARK: ViewProviderDelegate
254
263
 
255
264
  @objc(getNoticeViewController:resolve:reject:)
256
- dynamic func getNoticeViewController(position: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
265
+ dynamic func getNoticeViewController(position: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
257
266
  resolve(Didomi.shared.getNoticeViewController(position: position))
258
267
  }
259
268
 
260
269
  @objc(getPreferencesViewController:reject:)
261
- dynamic func getPreferencesViewController(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
270
+ dynamic func getPreferencesViewController(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
262
271
  resolve(Didomi.shared.getPreferencesViewController())
263
272
  }
264
273
 
265
274
  // MARK: Didomi extension
266
-
267
- @objc(setupUI)
268
- dynamic func setupUI() {
269
-
275
+
276
+ @objc(setupUI:reject:)
277
+ dynamic func setupUI(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
278
+
270
279
  DispatchQueue.main.async {
271
280
  if let containerController = RCTPresentedViewController() {
272
281
  Didomi.shared.setupUI(containerController: containerController)
273
282
  }
274
283
  }
284
+ resolve(0)
275
285
  }
276
-
277
- @objc(forceShowNotice)
278
- dynamic func forceShowNotice() {
286
+
287
+ @objc(forceShowNotice:reject:)
288
+ dynamic func forceShowNotice(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
279
289
  DispatchQueue.main.async {
280
290
  Didomi.shared.forceShowNotice()
281
291
  }
292
+ resolve(0)
282
293
  }
283
-
284
- @objc(showNotice)
285
- dynamic func showNotice() {
294
+
295
+ @objc(showNotice:reject:)
296
+ dynamic func showNotice(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
286
297
  DispatchQueue.main.async {
287
298
  Didomi.shared.showNotice()
288
299
  }
300
+ resolve(0)
289
301
  }
290
-
291
- @objc(hideNotice)
292
- dynamic func hideNotice() {
302
+
303
+ @objc(hideNotice:reject:)
304
+ dynamic func hideNotice(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
293
305
  DispatchQueue.main.async {
294
306
  Didomi.shared.hideNotice()
295
307
  }
308
+ resolve(0)
296
309
  }
297
310
 
298
311
  @objc(isNoticeVisible:reject:)
299
- dynamic func isNoticeVisible(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
312
+ dynamic func isNoticeVisible(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
300
313
  resolve(Didomi.shared.isNoticeVisible())
301
314
  }
302
315
 
303
316
  @objc(shouldConsentBeCollected:reject:)
304
- dynamic func shouldConsentBeCollected(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
317
+ dynamic func shouldConsentBeCollected(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
305
318
  resolve(Didomi.shared.shouldConsentBeCollected())
306
319
  }
307
-
308
- @objc(showPreferences:)
309
- dynamic func showPreferences(view: String?) {
320
+
321
+ @objc(showPreferences:resolve:reject:)
322
+ dynamic func showPreferences(view: String?, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
310
323
  if let containerController = RCTPresentedViewController(){
311
324
  if view?.lowercased() == "vendors"{
312
325
  DispatchQueue.main.async {
@@ -319,33 +332,35 @@ class RNDidomi: RCTEventEmitter {
319
332
  }
320
333
  }
321
334
  }
335
+ resolve(0)
322
336
  }
323
-
324
- @objc(hidePreferences)
325
- dynamic func hidePreferences() {
337
+
338
+ @objc(hidePreferences:reject:)
339
+ dynamic func hidePreferences(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
326
340
  DispatchQueue.main.async {
327
341
  Didomi.shared.hidePreferences()
328
342
  }
343
+ resolve(0)
329
344
  }
330
345
 
331
346
  @objc(isPreferencesVisible:reject:)
332
- dynamic func isPreferencesVisible(resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
347
+ dynamic func isPreferencesVisible(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
333
348
  resolve(Didomi.shared.isPreferencesVisible())
334
349
  }
335
350
 
336
351
  @objc(getTranslatedText:resolve:reject:)
337
- dynamic func getTranslatedText(key: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
352
+ dynamic func getTranslatedText(key: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
338
353
  resolve(Didomi.shared.getTranslatedText(key: key))
339
354
  }
340
355
 
341
356
  @objc(getText:resolve:reject:)
342
- dynamic func getText(key: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) {
357
+ dynamic func getText(key: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
343
358
  let text = Didomi.shared.getText(key: key)
344
359
  resolve(text)
345
360
  }
346
-
347
- @objc(setLogLevel:)
348
- dynamic func setLogLevel(minLevel: UInt8) {
361
+
362
+ @objc(setLogLevel:resolve:reject:)
363
+ dynamic func setLogLevel(minLevel: UInt8, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
349
364
  var level: UInt8
350
365
 
351
366
  switch minLevel {
@@ -362,19 +377,39 @@ class RNDidomi: RCTEventEmitter {
362
377
  }
363
378
 
364
379
  Didomi.shared.setLogLevel(minLevel: level)
380
+ resolve(0)
365
381
  }
366
382
 
367
- @objc(setUser:algorithm:secretId:salt:digest:)
368
- dynamic func setUser(id: String, algorithm: String?, secretId: String?, salt: String?, digest: String?) {
383
+ @objc(clearUser:reject:)
384
+ func clearUser(resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
385
+ Didomi.shared.clearUser()
386
+ resolve(0)
387
+ }
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) {
369
391
  if let algorithm = algorithm, let secretId = secretId, let digest = digest {
370
392
  Didomi.shared.setUser(id: id, algorithm: algorithm, secretId: secretId, salt: salt, digest: digest)
371
393
  } else {
372
394
  Didomi.shared.setUser(id: id)
373
395
  }
396
+ resolve(0)
397
+ }
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)
374
409
  }
375
410
 
376
- @objc(setUserWithHashAuth:algorithm:secretId:digest:salt:)
377
- dynamic func setUserWithHashAuth(id: String, algorithm: String, secretId: String, digest: String, salt: String?) {
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) {
378
413
  Didomi.shared.setUser(
379
414
  userAuthParams: UserAuthWithHashParams(
380
415
  id: id,
@@ -382,10 +417,34 @@ class RNDidomi: RCTEventEmitter {
382
417
  secretID: secretId,
383
418
  digest: digest,
384
419
  salt: salt))
420
+ resolve(0)
385
421
  }
386
422
 
387
- @objc(setUserWithHashAuthWithExpiration:algorithm:secretId:digest:salt:expiration:)
388
- dynamic func setUserWithHashAuthWithExpiration(id: String, algorithm: String, secretId: String, digest: String, salt: String?, expiration: Double) {
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) {
389
448
  Didomi.shared.setUser(
390
449
  userAuthParams: UserAuthWithHashParams(
391
450
  id: id,
@@ -394,20 +453,66 @@ class RNDidomi: RCTEventEmitter {
394
453
  digest: digest,
395
454
  salt: salt,
396
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)
397
480
  }
398
481
 
399
- @objc(setUserWithEncryptionAuth:algorithm:secretId:initializationVector:)
400
- dynamic func setUserWithEncryptionAuth(id: String, algorithm: String, secretId: String, initializationVector: String) {
482
+ @objc(setUserWithEncryptionAuth:algorithm:secretId:initializationVector:resolve:reject:)
483
+ dynamic func setUserWithEncryptionAuth(id: String, algorithm: String, secretId: String, initializationVector: String, resolve:RCTPromiseResolveBlock, reject:RCTPromiseRejectBlock) {
401
484
  Didomi.shared.setUser(
402
485
  userAuthParams: UserAuthWithEncryptionParams(
403
486
  id: id,
404
487
  algorithm: algorithm,
405
488
  secretID: secretId,
406
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)
407
512
  }
408
513
 
409
- @objc(setUserWithEncryptionAuthWithExpiration:algorithm:secretId:initializationVector:expiration:)
410
- dynamic func setUserWithEncryptionAuthWithExpiration(id: String, algorithm: String, secretId: String, initializationVector: String, expiration: Double) {
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) {
411
516
  Didomi.shared.setUser(
412
517
  userAuthParams: UserAuthWithEncryptionParams(
413
518
  id: id,
@@ -415,6 +520,29 @@ class RNDidomi: RCTEventEmitter {
415
520
  secretID: secretId,
416
521
  initializationVector: initializationVector,
417
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)
418
546
  }
419
547
 
420
548
  @objc public enum Views : Int, RawRepresentable {
@@ -423,7 +551,6 @@ class RNDidomi: RCTEventEmitter {
423
551
 
424
552
  case vendors
425
553
  }
426
-
427
554
  }
428
555
 
429
556
  // MARK: Didomi Specific structs
@@ -527,138 +654,158 @@ extension RNDidomi {
527
654
  "on_preferences_click_vendor_disagree",
528
655
  "on_preferences_click_vendor_save_choices",
529
656
  "on_sync_done",
530
- "on_sync_error"
657
+ "on_sync_error",
658
+ "on_language_updated",
659
+ "on_language_update_failed"
531
660
  ]
532
661
  }
662
+
663
+ private func initEventListener() {
533
664
 
534
- private func initEventListener(){
535
-
536
665
  didomiEventListener.onConsentChanged = { event in
537
- self.sendEvent(withName: "on_consent_changed", body:"")
666
+ self.dispatchEvent(withName: "on_consent_changed", body:"")
538
667
  }
539
668
 
540
669
  didomiEventListener.onReady = { event in
541
- self.sendEvent(withName: "on_ready", body: "")
670
+ self.dispatchEvent(withName: "on_ready", body: "")
542
671
  }
543
672
 
544
673
  didomiEventListener.onError = { event in
545
- self.sendEvent(withName: "on_error", body: "")
674
+ self.dispatchEvent(withName: "on_error", body: "")
546
675
  }
547
676
 
548
677
  didomiEventListener.onShowNotice = { event in
549
- self.sendEvent(withName: "on_show_notice", body: "")
678
+ self.dispatchEvent(withName: "on_show_notice", body: "")
550
679
  }
551
680
 
552
681
  didomiEventListener.onHideNotice = { event in
553
- self.sendEvent(withName: "on_hide_notice", body: "")
682
+ self.dispatchEvent(withName: "on_hide_notice", body: "")
554
683
  }
555
684
 
556
685
  didomiEventListener.onNoticeClickAgree = { event in
557
- self.sendEvent(withName: "on_notice_click_agree", body: "")
686
+ self.dispatchEvent(withName: "on_notice_click_agree", body: "")
558
687
  }
559
688
 
560
689
  didomiEventListener.onNoticeClickDisagree = { event in
561
- self.sendEvent(withName: "on_notice_click_disagree", body: "")
690
+ self.dispatchEvent(withName: "on_notice_click_disagree", body: "")
562
691
  }
563
692
 
564
693
  didomiEventListener.onNoticeClickMoreInfo = { event in
565
- self.sendEvent(withName: "on_notice_click_more_info", body: "")
694
+ self.dispatchEvent(withName: "on_notice_click_more_info", body: "")
566
695
  }
567
-
696
+
568
697
  didomiEventListener.onNoticeClickViewVendors = { event in
569
- self.sendEvent(withName: "on_notice_click_view_vendors", body: "")
698
+ self.dispatchEvent(withName: "on_notice_click_view_vendors", body: "")
570
699
  }
571
-
700
+
572
701
  didomiEventListener.onNoticeClickPrivacyPolicy = { event in
573
- self.sendEvent(withName: "on_notice_click_privacy_policy", body: "")
702
+ self.dispatchEvent(withName: "on_notice_click_privacy_policy", body: "")
574
703
  }
575
704
 
576
705
  didomiEventListener.onShowPreferences = { event in
577
- self.sendEvent(withName: "on_show_preferences", body: "")
706
+ self.dispatchEvent(withName: "on_show_preferences", body: "")
578
707
  }
579
708
 
580
709
  didomiEventListener.onHidePreferences = { event in
581
- self.sendEvent(withName: "on_hide_preferences", body: "")
710
+ self.dispatchEvent(withName: "on_hide_preferences", body: "")
582
711
  }
583
712
 
584
713
  didomiEventListener.onPreferencesClickAgreeToAll = { event in
585
- self.sendEvent(withName: "on_preferences_click_agree_to_all", body: "")
714
+ self.dispatchEvent(withName: "on_preferences_click_agree_to_all", body: "")
586
715
  }
587
716
 
588
717
  didomiEventListener.onPreferencesClickDisagreeToAll = { event in
589
- self.sendEvent(withName: "on_preferences_click_disagree_to_all", body: "")
718
+ self.dispatchEvent(withName: "on_preferences_click_disagree_to_all", body: "")
590
719
  }
591
720
 
592
721
  didomiEventListener.onPreferencesClickAgreeToAllPurposes = { event in
593
- self.sendEvent(withName: "on_preferences_click_agree_to_all_purposes", body: "")
722
+ self.dispatchEvent(withName: "on_preferences_click_agree_to_all_purposes", body: "")
594
723
  }
595
724
 
596
725
  didomiEventListener.onPreferencesClickDisagreeToAllPurposes = { event in
597
- self.sendEvent(withName: "on_preferences_click_disagree_to_all_purposes", body: "")
726
+ self.dispatchEvent(withName: "on_preferences_click_disagree_to_all_purposes", body: "")
598
727
  }
599
728
 
600
729
  didomiEventListener.onPreferencesClickResetAllPurposes = { event in
601
- self.sendEvent(withName: "on_preferences_click_reset_all_purposes", body: "")
730
+ self.dispatchEvent(withName: "on_preferences_click_reset_all_purposes", body: "")
602
731
  }
603
732
 
604
733
  didomiEventListener.onPreferencesClickAgreeToAllVendors = { event in
605
- self.sendEvent(withName: "on_preferences_click_agree_to_all_vendors", body: "")
734
+ self.dispatchEvent(withName: "on_preferences_click_agree_to_all_vendors", body: "")
606
735
  }
607
736
 
608
737
  didomiEventListener.onPreferencesClickDisagreeToAllVendors = { event in
609
- self.sendEvent(withName: "on_preferences_click_disagree_to_all_vendors", body: "")
738
+ self.dispatchEvent(withName: "on_preferences_click_disagree_to_all_vendors", body: "")
610
739
  }
611
740
 
612
741
  didomiEventListener.onPreferencesClickPurposeAgree = { event, purposeId in
613
- self.sendEvent(withName: "on_preferences_click_purpose_agree", body: purposeId)
742
+ self.dispatchEvent(withName: "on_preferences_click_purpose_agree", body: purposeId)
614
743
  }
615
744
 
616
745
  didomiEventListener.onPreferencesClickPurposeDisagree = { event, purposeId in
617
- self.sendEvent(withName: "on_preferences_click_purpose_disagree", body: purposeId)
746
+ self.dispatchEvent(withName: "on_preferences_click_purpose_disagree", body: purposeId)
618
747
  }
619
748
 
620
749
  didomiEventListener.onPreferencesClickCategoryAgree = { event, categoryId in
621
- self.sendEvent(withName: "on_preferences_click_category_agree", body: categoryId)
750
+ self.dispatchEvent(withName: "on_preferences_click_category_agree", body: categoryId)
622
751
  }
623
752
 
624
753
  didomiEventListener.onPreferencesClickCategoryDisagree = { event, categoryId in
625
- self.sendEvent(withName: "on_preferences_click_category_disagree", body: categoryId)
754
+ self.dispatchEvent(withName: "on_preferences_click_category_disagree", body: categoryId)
626
755
  }
627
756
 
628
757
  didomiEventListener.onPreferencesClickViewVendors = { event in
629
- self.sendEvent(withName: "on_preferences_click_view_vendors", body: "")
758
+ self.dispatchEvent(withName: "on_preferences_click_view_vendors", body: "")
630
759
  }
631
760
 
632
761
  didomiEventListener.onPreferencesClickViewPurposes = { event in
633
- self.sendEvent(withName: "on_preferences_click_view_purposes", body: "")
762
+ self.dispatchEvent(withName: "on_preferences_click_view_purposes", body: "")
634
763
  }
635
764
 
636
765
  didomiEventListener.onPreferencesClickSaveChoices = { event in
637
- self.sendEvent(withName: "on_preferences_click_save_choices", body: "")
766
+ self.dispatchEvent(withName: "on_preferences_click_save_choices", body: "")
638
767
  }
639
768
 
640
769
  didomiEventListener.onPreferencesClickVendorAgree = { event, vendorId in
641
- self.sendEvent(withName: "on_preferences_click_vendor_agree", body: vendorId)
770
+ self.dispatchEvent(withName: "on_preferences_click_vendor_agree", body: vendorId)
642
771
  }
643
772
 
644
773
  didomiEventListener.onPreferencesClickVendorDisagree = { event, vendorId in
645
- self.sendEvent(withName: "on_preferences_click_vendor_disagree", body: vendorId)
774
+ self.dispatchEvent(withName: "on_preferences_click_vendor_disagree", body: vendorId)
646
775
  }
647
776
 
648
777
  didomiEventListener.onPreferencesClickVendorSaveChoices = { event in
649
- self.sendEvent(withName: "on_preferences_click_vendor_save_choices", body: "")
778
+ self.dispatchEvent(withName: "on_preferences_click_vendor_save_choices", body: "")
650
779
  }
651
780
 
652
781
  didomiEventListener.onSyncDone = { event, organizationUserId in
653
- self.sendEvent(withName: "on_sync_done", body: organizationUserId)
782
+ self.dispatchEvent(withName: "on_sync_done", body: organizationUserId)
654
783
  }
655
784
 
656
785
  didomiEventListener.onSyncError = { event, error in
657
- self.sendEvent(withName: "on_sync_error", body: error)
786
+ self.dispatchEvent(withName: "on_sync_error", body: error)
787
+ }
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)
658
795
  }
659
796
 
660
797
  Didomi.shared.addEventListener(listener: didomiEventListener)
661
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
+ }
662
809
  }
663
810
 
664
811
  extension Int {