Skip to content
64 changes: 63 additions & 1 deletion src/Rokt-Kit.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ var constructor = function () {
self.filters = {};
self.userAttributes = {};
self.testHelpers = null;
self.placementEventMappingLookup = {};

/**
* Generates the Rokt launcher script URL with optional domain override and extensions
Expand Down Expand Up @@ -74,8 +75,16 @@ var constructor = function () {
) {
var accountId = settings.accountId;
var roktExtensions = extractRoktExtensions(settings.roktExtensions);
self.userAttributes = filteredUserAttributes;
self.userAttributes = filteredUserAttributes || {};
self.onboardingExpProvider = settings.onboardingExpProvider;

var placementEventMapping = parseSettingsString(
settings.placementEventMapping
);
self.placementEventMappingLookup = generateMappedEventLookup(
placementEventMapping
);

var domain = window.mParticle.Rokt.domain;
var launcherOptions = mergeObjects(
{},
Expand All @@ -89,6 +98,9 @@ var constructor = function () {
self.testHelpers = {
generateLauncherScript: generateLauncherScript,
extractRoktExtensions: extractRoktExtensions,
hashEventMessage: hashEventMessage,
parseSettingsString: parseSettingsString,
generateMappedEventLookup: generateMappedEventLookup,
};
attachLauncher(accountId, launcherOptions);
return;
Expand Down Expand Up @@ -199,10 +211,20 @@ var constructor = function () {

var filteredUserIdentities = returnUserIdentities(filteredUser);

var localSessionAttributes = {};

try {
localSessionAttributes =
window.mParticle.Rokt.getLocalSessionAttributes();
} catch (error) {
console.error('Error getting local session attributes:', error);
}

var selectPlacementsAttributes = mergeObjects(
filteredUserIdentities,
replaceOtherWithEmailsha256(filteredAttributes),
optimizelyAttributes,
localSessionAttributes,
{
mpid: mpid,
}
Expand Down Expand Up @@ -231,6 +253,26 @@ var constructor = function () {
window.Rokt.setExtensionData(partnerExtensionData);
}

function processEvent(event) {
if (
!isKitReady() ||
typeof window.mParticle.Rokt.setLocalSessionAttribute !== 'function'
) {
return;
}
Comment thread
alexs-mparticle marked this conversation as resolved.

var hashedEvent = hashEventMessage(
event.EventDataType,
event.EventCategory,
event.EventName
);

if (self.placementEventMappingLookup[hashedEvent]) {
var mappedValue = self.placementEventMappingLookup[hashedEvent];
window.mParticle.Rokt.setLocalSessionAttribute(mappedValue, true);
}
}

function onUserIdentified(filteredUser) {
self.filters.filteredUser = filteredUser;
self.userAttributes = filteredUser.getAllUserAttributes();
Expand Down Expand Up @@ -330,6 +372,7 @@ var constructor = function () {

// Kit Callback Methods
this.init = initForwarder;
this.process = processEvent;
this.setExtensionData = setExtensionData;
this.setUserAttribute = setUserAttribute;
this.onUserIdentified = onUserIdentified;
Expand Down Expand Up @@ -429,6 +472,25 @@ function extractRoktExtensions(settingsString) {
return roktExtensions;
}

function generateMappedEventLookup(placementEventMapping) {
if (!placementEventMapping) {
return {};
}

var mappedEvents = {};
for (var i = 0; i < placementEventMapping.length; i++) {
var mapping = placementEventMapping[i];
mappedEvents[mapping.jsmap] = mapping.value;
}
return mappedEvents;
}

function hashEventMessage(messageType, eventType, eventName) {
return window.mParticle.generateHash(
[messageType, eventType, eventName].join('')
);
Comment thread
alexs-mparticle marked this conversation as resolved.
}

if (window && window.mParticle && window.mParticle.addForwarder) {
window.mParticle.addForwarder({
name: name,
Expand Down
Loading
Loading