UNPKG

gtm-dashboard-extension-worona

Version:

Extension for Google Tag Manager stuff.

41 lines (37 loc) 1.36 kB
/* 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), ]; }