UNPKG

@zohodesk/platform-middleware

Version:

Generalized Contract for the events from Marketplace App, In-App widgets, CRM-Plus and EFC

118 lines (97 loc) 3.1 kB
"use strict"; var PlatformInstance = function (PlatformInstance) { var eventHandlers = {}; function sendEvent(event) { return new Promise(function (resolve, reject) { var eventCallbackObj = window.platformConfig.eventHandlers; var eventListenerName = window.platformConfig.eventListenerName; event.promise = { resolve: resolve, reject: reject }; event.EVENT_FROM = 'PRODUCT'; eventCallbackObj[eventListenerName](event); }); } function bindeventHandlers(event) { var eventName = event.name, eventHandler = event.handlerFunction; if (typeof eventName !== 'string') { throw new Error('Invalid eventname parameter passed.'); } if (typeof eventHandler !== 'function') { throw new Error('Invalid function parameter passed.'); } var handlersArray = eventHandlers[eventName]; if (!Array.isArray(handlersArray)) { eventHandlers[eventName] = handlersArray = []; } handlersArray.push(eventHandler); } function executeEventHandlers(event) { var eventName = event.name, eventData = event.data; var handlersArray = eventHandlers[eventName]; if (handlersArray) { handlersArray.forEach(function (handlerFunction) { handlerFunction(eventData); }); } } function init() { return { sendEvent: sendEvent, on: bindeventHandlers }; } PlatformInstance.init = init; //Internal Event PlatformInstance.BroadcastEvent = executeEventHandlers; return PlatformInstance; }(window.PlatformInstance = {} || {}); (function (globalNameSpace) { var appInit = PlatformInstance.init(); function get(property, payload) { var options = {}; options.type = 'GET_DATA'; options.property = property; options.payload = payload; return appInit.sendEvent(options); } function set(property, payload) { var options = {}; options.type = 'SET_DATA'; options.property = property; options.payload = payload; return appInit.sendEvent(options); } function invoke(payload) { var options = {}; options.type = 'INVOKE'; options.payload = payload; return appInit.sendEvent(options); } function invokeMethodCommonPattern(action, payload) { var options = {}; options.type = action; options.payload = payload; return appInit.sendEvent(options); } function on(eventName, handlerFunction) { var options = {}; options.name = eventName; options.handlerFunction = handlerFunction; appInit.on(options); } function dispatch(action, payload) { var options = {}; options.type = 'ACTION'; options.property = action; options.payload = payload; return appInit.sendEvent(options); } window[globalNameSpace].get = get; window[globalNameSpace].set = set; window[globalNameSpace].invoke = window.platformConfig.overrideInvokeMethodToCommonPattern ? invokeMethodCommonPattern : invoke; window[globalNameSpace].on = on; window[globalNameSpace].dispatch = dispatch; })(window['globalNameSpace'] || '');