UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

40 lines (35 loc) 782 B
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), }; }