UNPKG

evergage-datalayer

Version:

Listener and API for fetching current Evergage campaig information in a users session to be used in an a/b test.

42 lines (41 loc) 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var canUseDOM = typeof window !== "undefined"; var evergageReady = typeof Evergage !== "undefined"; var currentCampaigns = []; var campaignListeners = []; (function () { if (canUseDOM && evergageReady) { Evergage.addCampaignResponseListener(function (x) { return pushUpdates(x.campaignResponses); }); } })(); exports.subscribeToCampaign = function (callback, campaignName) { var currentListener = campaignListeners[campaignName]; var currentCampaign = currentCampaigns[campaignName]; if (!currentListener) { campaignListeners[campaignName] = []; } if (currentCampaign) { callback(currentCampaign); } campaignListeners[campaignName].push(callback); }; var pushUpdates = function (responses) { responses.forEach(function (campaign) { var listeners = campaignListeners[campaign.campaignName]; var hasListeners = Array.isArray(listeners) && listeners.length > 0; storeCampaign(campaign); if (!hasListeners) { return; } campaignListeners[campaign.campaignName].forEach(function (cb) { cb(campaign); }); }); }; var storeCampaign = function (evergageCampaign) { if (!currentCampaigns[evergageCampaign.campaignName]) { currentCampaigns[evergageCampaign.campaignName] = []; } currentCampaigns[evergageCampaign.campaignName] = evergageCampaign; };