Repository URL to install this package:
|
Version:
1.0.0-alpha.7 ▾
|
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);
}
};