@aller/blink
Version:
A library for tracking user behaviour.
57 lines (54 loc) • 1.43 kB
text/typescript
import generalData from '../utils/general-data';
import { BlinkEvent } from '../types';
import { Page } from '../selectors/get-page-state';
/**
* Prepares click data selecting the right
* fields to send to the server
*/
export default function prepareClicksForSending({
page,
url,
clickId,
externalId,
context,
}: {
page: Page;
url: string;
externalId: string;
clickId: string;
context: string[];
}): BlinkEvent {
const preview =
externalId && page.state.articlePreview[externalId]
? page.state.articlePreview[externalId]
: {
id: 'error',
url: undefined,
title: undefined,
height: 0,
width: 0,
personalizationSystemUsed: undefined,
personalizationParametersRequested: undefined,
};
return {
...generalData(page.state),
type: 'click',
id: clickId || externalId || '',
clickId: clickId || '',
context: context || [],
article:
url && !clickId
? {
url,
harvesterId: externalId,
}
: undefined,
title: preview.title || undefined,
height: preview.height || 0,
width: preview.width || 0,
personalizationParametersRequested:
preview.personalizationParametersRequested || undefined,
personalizationSystemUsed: preview.personalizationSystemUsed || undefined,
position: preview.position || undefined,
};
}