@aller/blink
Version:
A library for tracking user behaviour.
51 lines (48 loc) • 1.4 kB
text/typescript
import generalData from '../utils/general-data';
import getIdFromUrl from '../utils/get-id-from-url';
import { BlinkEvent } from '../types';
import { Page } from '../selectors/get-page-state';
export interface PreparePageLoadInput {
page: Page;
url: string;
utils: {
getClientWidth: () => number;
getClientHeight: () => number;
getScrollHeight: () => number;
getArticleBodyHeight: () => number;
getArticleBodyTop: () => number;
};
}
export default function preparePageloadEvent({
page,
url,
utils,
}: PreparePageLoadInput): BlinkEvent {
const {
getClientWidth,
getClientHeight,
getScrollHeight,
getArticleBodyHeight,
getArticleBodyTop,
} = utils;
const id = getIdFromUrl(url, page.state.general.site);
return {
...generalData(page.state),
abCookie: page.state.general.abCookie,
commercialSegments: page.state.general.commercialSegments,
article: { harvesterId: id, url },
articleBodyHeight: getArticleBodyHeight(),
articleBodyTop: getArticleBodyTop(),
clientHeight: getClientHeight(),
clientWidth: getClientWidth(),
cmId: page.state.general.cmId,
id: id || '',
pageType: page.state.general.pageType,
plussData: page.state.general.plussData,
previousPageView: page.state.general.previousPageView,
scroll: {
scrollHeight: getScrollHeight(),
},
type: 'pageLoad',
};
}