UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

47 lines (44 loc) 1.28 kB
import { calculateEventTime } from '../utils/event-time'; import generalData from '../utils/general-data'; import { BlinkEvent } from '../types'; import { Page } from '../selectors/get-page-state'; /** * Prepares a raw impression by aggregating its fields so that * it can be sent to the server in the format aas expects. */ export default function prepareBoxEvent( page: Page, id: string, time?: Date, ): BlinkEvent { const box = page.state.box[id] || { id: id || 'error', url: undefined }; const inscreenTime = id ? calculateEventTime({ times: page.state.inscreen[id], screenEvents: page.state.screen.events, now: time, }) : 0; return { ...generalData(page.state), id: box.id, boxId: box.id, type: 'box', inscreenTime, title: box.title || undefined, height: box.height || 0, width: box.width || 0, }; } export function getAllBoxEventsPrepared(page: Page, time?: Date): BlinkEvent[] { return Object.keys(page.state.box) .map(articleId => { try { return prepareBoxEvent(page, articleId, time); } catch (err) { const event: BlinkEvent = { id: '', pageView: '', type: 'error' }; return event; } }) .filter(event => event.type !== 'error'); }