@aller/blink
Version:
A library for tracking user behaviour.
40 lines (35 loc) • 782 B
text/typescript
import { SCREEN_SHOW, SCREEN_HIDE } from '../actions';
export interface ScreenEvent {
time: Date;
type: 'show' | 'hide';
}
export interface ScreenState {
events: ScreenEvent[];
}
function events(state: ScreenEvent[] = [], action: any) {
switch (action.type) {
case SCREEN_SHOW:
return state.concat({
time: action.payload.time || new Date(),
type: 'show',
});
case SCREEN_HIDE:
return state.concat({
time: action.payload.time || new Date(),
type: 'hide',
});
default:
break;
}
return state;
}
export default function screen(
state: ScreenState = { events: [] },
action: any,
) {
const ev = state ? state.events || [] : [];
return {
...state,
events: events(ev, action),
};
}