gtm-dashboard-extension-worona
Version:
Extension for Google Tag Manager stuff.
41 lines (37 loc) • 1.36 kB
JavaScript
/* eslint-disable no-undef */
import { takeEvery } from 'redux-saga';
import { select, fork } from 'redux-saga/effects';
import { capitalize } from 'lodash';
import * as deps from '../deps';
export function launchGtmEventsSaga({ type, ...rest }) {
const exceptions = [/redux-form/, /subscriptions/, /build\/PACKAGE_/];
if (!exceptions.reduce((acc, val) => acc || val.test(type), false))
window.dataLayer.push({
event: type,
actions: { [type]: rest },
});
}
export function* virtualPageView() {
const service = yield select(deps.selectors.getSelectedService);
const pkg = yield select(deps.selectors.getSelectedPackageName);
const pathname = yield select(deps.selectors.getPathname);
const titleFromUrl = capitalize(/\/?([^/]+)/.exec(pathname)[1]).replace(/-/g, ' ');
const titleFromPkg = pkg ? capitalize(/(.+)-worona/.exec(pkg)[1].replace(/-/g, ' ')) : '';
const title = !service ? titleFromUrl : titleFromPkg;
const url = pathname.replace(/(\/?.+)(\/[a-zA-Z0-9]{17})/, '$1');
window.dataLayer.push({
event: 'virtualPageView',
virtualPage: {
title,
url,
},
});
}
export default function* gtmSagas() {
window.dataLayer = window.dataLayer || [];
yield [
takeEvery('*', launchGtmEventsSaga),
takeEvery(deps.types.ROUTER_DID_CHANGE, virtualPageView),
fork(virtualPageView),
];
}