Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
import { getBasicAnalyticsData } from './helpers/getBasicAnalyticsData';
import { getDefaultTrackingFields } from './helpers/getDefaultTrackingFields';

/**
 * Promisify Google Analytics client's dataLayer.push method
 *
 * @param {Object} args The list of arguments invoked with the function
 * @return {undefined}
 */
const dataLayerPromise = (...args) =>
  new Promise(resolve => {
    window.dataLayer.push(...args, resolve);
  });

/**
 * Async function to push tracking data to Google Analytics' data layer
 *
 * @param {Object} trackingData The data that needs to be tracked.
 * @param {string} params.pageType - Will be pushed as `page.pageType` to the dataLayer
 * @param {string} params.event
 * @return {undefined}
 */
export const trackGa = async (trackingData, { pageType, event } = {}) => {
  try {
    const destinationData = {
      ...getBasicAnalyticsData({ pageType }),
      ...getDefaultTrackingFields(event), // TODO check eventPage
      ...trackingData,
    };

    await dataLayerPromise(destinationData);
  } catch (e) {
    console.warn('Error on TrackGA');
    console.error(e);
  }
};