@@ -32,6 +32,7 @@ var RoktKit = (function (exports) {
3232 self . filters = { } ;
3333 self . userAttributes = { } ;
3434 self . testHelpers = null ;
35+ self . placementEventMappingLookup = { } ;
3536
3637 /**
3738 * Generates the Rokt launcher script URL with optional domain override and extensions
@@ -77,8 +78,16 @@ var RoktKit = (function (exports) {
7778 ) {
7879 var accountId = settings . accountId ;
7980 var roktExtensions = extractRoktExtensions ( settings . roktExtensions ) ;
80- self . userAttributes = filteredUserAttributes ;
81+ self . userAttributes = filteredUserAttributes || { } ;
8182 self . onboardingExpProvider = settings . onboardingExpProvider ;
83+
84+ var placementEventMapping = parseSettingsString (
85+ settings . placementEventMapping
86+ ) ;
87+ self . placementEventMappingLookup = generateMappedEventLookup (
88+ placementEventMapping
89+ ) ;
90+
8291 var domain = window . mParticle . Rokt . domain ;
8392 var launcherOptions = mergeObjects (
8493 { } ,
@@ -92,6 +101,9 @@ var RoktKit = (function (exports) {
92101 self . testHelpers = {
93102 generateLauncherScript : generateLauncherScript ,
94103 extractRoktExtensions : extractRoktExtensions ,
104+ hashEventMessage : hashEventMessage ,
105+ parseSettingsString : parseSettingsString ,
106+ generateMappedEventLookup : generateMappedEventLookup ,
95107 } ;
96108 attachLauncher ( accountId , launcherOptions ) ;
97109 return ;
@@ -202,10 +214,20 @@ var RoktKit = (function (exports) {
202214
203215 var filteredUserIdentities = returnUserIdentities ( filteredUser ) ;
204216
217+ var localSessionAttributes = { } ;
218+
219+ try {
220+ localSessionAttributes =
221+ window . mParticle . Rokt . getLocalSessionAttributes ( ) ;
222+ } catch ( error ) {
223+ console . error ( 'Error getting local session attributes:' , error ) ;
224+ }
225+
205226 var selectPlacementsAttributes = mergeObjects (
206227 filteredUserIdentities ,
207228 replaceOtherWithEmailsha256 ( filteredAttributes ) ,
208229 optimizelyAttributes ,
230+ localSessionAttributes ,
209231 {
210232 mpid : mpid ,
211233 }
@@ -234,6 +256,26 @@ var RoktKit = (function (exports) {
234256 window . Rokt . setExtensionData ( partnerExtensionData ) ;
235257 }
236258
259+ function processEvent ( event ) {
260+ if (
261+ ! isKitReady ( ) ||
262+ typeof window . mParticle . Rokt . setLocalSessionAttribute !== 'function'
263+ ) {
264+ return ;
265+ }
266+
267+ var hashedEvent = hashEventMessage (
268+ event . EventDataType ,
269+ event . EventCategory ,
270+ event . EventName
271+ ) ;
272+
273+ if ( self . placementEventMappingLookup [ hashedEvent ] ) {
274+ var mappedValue = self . placementEventMappingLookup [ hashedEvent ] ;
275+ window . mParticle . Rokt . setLocalSessionAttribute ( mappedValue , true ) ;
276+ }
277+ }
278+
237279 function onUserIdentified ( filteredUser ) {
238280 self . filters . filteredUser = filteredUser ;
239281 self . userAttributes = filteredUser . getAllUserAttributes ( ) ;
@@ -333,6 +375,7 @@ var RoktKit = (function (exports) {
333375
334376 // Kit Callback Methods
335377 this . init = initForwarder ;
378+ this . process = processEvent ;
336379 this . setExtensionData = setExtensionData ;
337380 this . setUserAttribute = setUserAttribute ;
338381 this . onUserIdentified = onUserIdentified ;
@@ -432,6 +475,25 @@ var RoktKit = (function (exports) {
432475 return roktExtensions ;
433476 }
434477
478+ function generateMappedEventLookup ( placementEventMapping ) {
479+ if ( ! placementEventMapping ) {
480+ return { } ;
481+ }
482+
483+ var mappedEvents = { } ;
484+ for ( var i = 0 ; i < placementEventMapping . length ; i ++ ) {
485+ var mapping = placementEventMapping [ i ] ;
486+ mappedEvents [ mapping . jsmap ] = mapping . value ;
487+ }
488+ return mappedEvents ;
489+ }
490+
491+ function hashEventMessage ( messageType , eventType , eventName ) {
492+ return window . mParticle . generateHash (
493+ [ messageType , eventType , eventName ] . join ( '' )
494+ ) ;
495+ }
496+
435497 if ( window && window . mParticle && window . mParticle . addForwarder ) {
436498 window . mParticle . addForwarder ( {
437499 name : name ,
0 commit comments