UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

61 lines (57 loc) 1.53 kB
import generalData from '../utils/general-data'; import { calculateEventTime } from '../utils/event-time'; import { BlinkEvent } from '../types'; import { Page } from '../selectors/get-page-state'; export interface PrepareActiveTimeProps { page: Page; id: string; utils: { getPersistedState: (key: string) => any; }; time?: Date; } /** * Prepares a active time data selecting the right * fields to send to the server */ export default function prepareActiveTimeForSending({ page, id, utils, time, }: PrepareActiveTimeProps): BlinkEvent { const activeTime = page.state.activeTime[id]; const pap = utils.getPersistedState(`${page.id}::impression::${id}`) || null; return { ...generalData(page.state), type: 'activeTime', id, article: { harvesterId: activeTime.id, url: activeTime.url }, previousArticlePreview: pap ? { inscreenTime: pap.inscreenTime, title: pap.title, clicked: utils.getPersistedState(`${page.id}::clicked::${id}`) || false, } : undefined, activeTime: calculateEventTime({ times: activeTime.activity, screenEvents: page.state.screen.events, now: time, }), maxScroll: 0, }; } export function getAllActiveTimeEventsPrepared( page: any, utils: any, time: Date, ): BlinkEvent[] { if (!page || !page.state) { return []; } return Object.keys(page.state.activeTime).map(articleId => prepareActiveTimeForSending({ page, id: articleId, time, utils }), ); }