@aller/blink
Version:
A library for tracking user behaviour.
59 lines (56 loc) • 1.5 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;
cmId?: string;
maxScroll?: number;
pageType?: string;
pageView?: string;
plussData?: {
hasAccess: boolean;
customerNumber: string;
};
previousPageView?: string;
referrer?: string;
site?: string;
url?: string;
userId?: string;
version?: string;
}
export default function general(state: GeneralState = {}, action: any) {
switch (action.type) {
case PAGE_INIT: {
return {
...state,
abCookie: action.payload.abCookie,
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,
userId: action.payload.userId,
version: VERSION,
};
}
case PAGE_LOAD: {
return {
...state,
cmId: action.payload.cmId,
plussData: action.payload.plussData,
};
}
case ARTICLE_ACTIVITY_START: {
return {
...state,
maxScroll: action.payload.maxScroll,
};
}
default:
break;
}
return state;
}