@aller/blink
Version:
A library for tracking user behaviour.
66 lines (63 loc) • 1.88 kB
text/typescript
import { VERSION } from '../config/config';
import generateUUID from '../utils/uuid';
import { PAGE_LOAD, PAGE_INIT, ARTICLE_ACTIVITY_START } from '../actions';
export interface GeneralState {
abCookie?: number;
clientHeight?: string;
clientWidth?: string;
pageType?: string;
pageView?: string;
plussData?: {
hasAccess: boolean;
customerNumber: string;
};
previousPageView?: string;
referrer?: string;
site?: string;
scrollHeight?: number;
pageScrollMaxOffsetY?: number;
pageScrollLatestOffsetY?: number;
url?: string;
version?: string;
}
export default function general(state: GeneralState = {}, action: any) {
switch (action.type) {
case PAGE_INIT: {
return {
...state,
abCookie: action.payload.abCookie,
customUserAgent: action.payload.customUserAgent,
commercialSegments: action.payload.commercialSegments || '',
pageType: action.payload.pageType || '',
pageView: action.payload.pageView || generateUUID(),
previousPageView:
action.payload.previousPageView || state.pageView || undefined,
referrer: action.payload.referrer || undefined,
site: action.payload.site,
url: action.payload.url,
version: VERSION,
};
}
case PAGE_LOAD: {
return {
...state,
clientHeight: action.payload.clientHeight,
clientWidth: action.payload.clientWidth,
scrollHeight: action.payload.scrollHeight,
plussData: action.payload.plussData,
};
}
case ARTICLE_ACTIVITY_START: {
return {
...state,
pageScrollMaxOffsetY: Math.max(
action.payload.pageScrollOffsetY || 0,
state.pageScrollMaxOffsetY || 0,
),
pageScrollLatestOffsetY: action.payload.pageScrollOffsetY || 0,
};
}
default:
return state;
}
}