@shopgate/pwa-tracking
Version:
Tracking library for the Shopgate Connect PWA.
44 lines (42 loc) • 1.27 kB
JavaScript
import { getCurrentRoute } from '@shopgate/engage/core/selectors';
import { variantDidChange$ } from '@shopgate/pwa-common-commerce/product/streams';
import { productIsReady$ } from "../streams/product";
import { getBaseProductFormatted, getProductFormatted } from "../selectors/product";
import { makeGetTrackingData } from "../selectors";
import { track } from "../helpers";
/**
* Product tracking subscriptions.
* @param {Function} subscribe The subscribe function.
*/
export default function product(subscribe) {
/**
* Gets triggered on product variant change/selection.
*/
subscribe(variantDidChange$, ({
getState,
action
}) => {
const state = getState();
const {
id: productId
} = action.productData;
const props = {
productId
};
const trackingData = {
variant: getProductFormatted(state, props),
baseProduct: getBaseProductFormatted(state, props)
};
track('variantSelected', trackingData, state);
});
/**
* Gets triggered on product pageview.
*/
subscribe(productIsReady$, ({
getState
}) => {
const state = getState();
const getTrackingData = makeGetTrackingData();
track('viewContent', getTrackingData(state, getCurrentRoute(state)), state);
});
}