@@ -122,7 +122,7 @@ export default class Cmp {
122
122
return this . store . getFullVendorConsentsObject ( vendorIds )
123
123
. then ( consent => {
124
124
consent . gdprApplies = this . gdprApplies ;
125
- callback ( consent ) ;
125
+ callback ( consent , true ) ;
126
126
return consent ;
127
127
} ) ;
128
128
} ,
@@ -131,12 +131,16 @@ export default class Cmp {
131
131
* Get the encoded vendor consent data value.
132
132
*/
133
133
getConsentData : ( _ , callback = ( ) => { } ) => {
134
- const consentData = {
135
- gdprApplies : this . gdprApplies ,
136
- hasGlobalScope : this . config . storeConsentGlobally ,
137
- consentData : this . generateConsentString ( )
138
- } ;
139
- callback ( consentData , true ) ;
134
+ return this . store . getFullVendorConsentsObject ( )
135
+ . then ( consent => {
136
+ const output = {
137
+ gdprApplies : this . gdprApplies ,
138
+ hasGlobalScope : this . config . storeConsentGlobally ,
139
+ consentData : consent . consentString
140
+ } ;
141
+ callback ( output , true ) ;
142
+ return output ;
143
+ } ) ;
140
144
} ,
141
145
142
146
/**
@@ -224,8 +228,9 @@ export default class Cmp {
224
228
* Trigger the consent tool UI to be shown
225
229
*/
226
230
showConsentTool : ( _ , callback = ( ) => { } ) => {
231
+ const self = this ;
227
232
let _command ;
228
- switch ( this . config . layout ) {
233
+ switch ( self . config . layout ) {
229
234
case 'footer' :
230
235
_command = 'toggleFooterConsentToolShowing' ;
231
236
break ;
@@ -236,8 +241,9 @@ export default class Cmp {
236
241
_command = 'toggleConsentToolShowing' ;
237
242
}
238
243
239
- this . cmpShown = true ;
240
- this . store [ _command ] ( true ) ;
244
+ self . cmpShown = true ;
245
+ self . store [ _command ] ( true ) ;
246
+ self . notify ( "consentToolDisplayed" ) ;
241
247
callback ( true ) ;
242
248
} ,
243
249
@@ -254,21 +260,43 @@ export default class Cmp {
254
260
customPurposeList
255
261
} = this . store ;
256
262
257
- const { purposes : customPurposes = [ ] } = customPurposeList ;
258
- const { purposes = [ ] } = vendorList || { } ;
263
+ let customPurposes = [ ] ;
264
+ customPurposes = customPurposeList && customPurposeList . purposes ;
259
265
266
+ const { purposes = [ ] } = vendorList || { } ;
260
267
const { selectedPurposeIds = new Set ( ) } = persistedVendorConsentData || { } ;
261
268
const { selectedCustomPurposeIds = new Set ( ) } = persistedPublisherConsentData || { } ;
262
269
263
- const allowedPurposeIds = new Set ( purposes . map ( ( { id} ) => id ) ) ;
264
- const allowedCustomPurposeIds = new Set ( customPurposes . map ( ( { id} ) => id ) ) ;
270
+ const allowedPurposeIds = new Set ( ) ;
271
+ for ( let i in purposes ) {
272
+ allowedPurposeIds . add ( purposes [ i ] . id ) ;
273
+ }
274
+
275
+ const allowedCustomPurposeIds = new Set ( ) ;
276
+ if ( customPurposeList ) {
277
+ for ( let j in customPurposes ) {
278
+ allowedCustomPurposeIds . add ( customPurposes [ j ] . id ) ;
279
+ }
280
+ }
281
+
282
+ const selectedAllowedPurposeIds = new Set ( ) ;
283
+ Array . from ( selectedPurposeIds ) . filter ( id => allowedPurposeIds . has ( id ) ) . forEach ( ( id ) => {
284
+ selectedAllowedPurposeIds . add ( id ) ;
285
+ } ) ;
286
+
287
+ const selectedAllowedCustomPurposeIds = new Set ( ) ;
288
+ if ( customPurposeList ) {
289
+ Array . from ( selectedCustomPurposeIds ) . filter ( id => allowedCustomPurposeIds . has ( id ) ) . forEach ( ( id ) => {
290
+ selectedAllowedCustomPurposeIds . add ( id ) ;
291
+ } ) ;
292
+ }
265
293
266
294
// Encode the persisted data
267
295
return persistedPublisherConsentData && encodePublisherConsentData ( {
268
296
...persistedVendorConsentData ,
269
297
...persistedPublisherConsentData ,
270
- selectedCustomPurposeIds : new Set ( Array . from ( selectedCustomPurposeIds ) . filter ( id => allowedCustomPurposeIds . has ( id ) ) ) ,
271
- selectedPurposeIds : new Set ( Array . from ( selectedPurposeIds ) . filter ( id => allowedPurposeIds . has ( id ) ) ) ,
298
+ selectedPurposeIds : selectedAllowedPurposeIds ,
299
+ selectedCustomPurposeIds : selectedAllowedCustomPurposeIds ,
272
300
customPurposeList,
273
301
vendorList,
274
302
} ) ;
@@ -307,14 +335,31 @@ export default class Cmp {
307
335
} = persistedVendorConsentData || { } ;
308
336
309
337
// Filter consents by values that exist in the current vendorList
310
- const allowedVendorIds = new Set ( vendors . map ( ( { id} ) => id ) ) ;
311
- const allowedPurposeIds = new Set ( purposes . map ( ( { id} ) => id ) ) ;
338
+ const allowedVendorIds = new Set ( ) ;
339
+ for ( let i in vendors ) {
340
+ allowedVendorIds . add ( vendors [ i ] . id ) ;
341
+ }
342
+
343
+ const allowedPurposeIds = new Set ( ) ;
344
+ for ( let j in purposes ) {
345
+ allowedPurposeIds . add ( purposes [ j ] . id ) ;
346
+ }
347
+
348
+ const selectedAllowedVendorIds = new Set ( ) ;
349
+ Array . from ( selectedVendorIds ) . filter ( id => allowedVendorIds . has ( id ) ) . forEach ( ( id ) => {
350
+ selectedAllowedVendorIds . add ( id ) ;
351
+ } ) ;
352
+
353
+ const selectedAllowedPurposeIds = new Set ( ) ;
354
+ Array . from ( selectedPurposeIds ) . filter ( id => allowedPurposeIds . has ( id ) ) . forEach ( ( id ) => {
355
+ selectedAllowedPurposeIds . add ( id ) ;
356
+ } ) ;
312
357
313
358
// Encode the persisted data
314
359
return persistedVendorConsentData && encodeVendorConsentData ( {
315
360
...persistedVendorConsentData ,
316
- selectedVendorIds : new Set ( Array . from ( selectedVendorIds ) . filter ( id => allowedVendorIds . has ( id ) ) ) ,
317
- selectedPurposeIds : new Set ( Array . from ( selectedPurposeIds ) . filter ( id => allowedPurposeIds . has ( id ) ) ) ,
361
+ selectedVendorIds : selectedAllowedVendorIds ,
362
+ selectedPurposeIds : selectedAllowedPurposeIds ,
318
363
vendorList
319
364
} ) ;
320
365
} ;
0 commit comments