@aller/blink
Version:
A library for tracking user behaviour.
108 lines (103 loc) • 2.15 kB
text/typescript
import {
AD_SCREEN_ENTER,
AD_SCREEN_EXIT,
ARTICLE_PREVIEW_SCREEN_ENTER,
ARTICLE_PREVIEW_SCREEN_EXIT,
AD_SCREEN_ENTER_0,
AD_SCREEN_EXIT_0,
PAGE_INIT,
BOX_SCREEN_ENTER,
BOX_SCREEN_EXIT,
} from '../actions';
function inscreen(state = [], action: any) {
switch (action.type) {
case AD_SCREEN_ENTER:
case ARTICLE_PREVIEW_SCREEN_ENTER:
case BOX_SCREEN_ENTER:
return [
...state,
{
type: 'start',
time: action.payload.time || new Date(),
},
];
case AD_SCREEN_EXIT:
case ARTICLE_PREVIEW_SCREEN_EXIT:
case BOX_SCREEN_EXIT:
return [
...state,
{
type: 'stop',
time: action.payload.time || new Date(),
},
];
default:
break;
}
return state;
}
export function inscreen0(state = [], action: any) {
switch (action.type) {
case AD_SCREEN_ENTER_0:
return [
...state,
{
type: 'start',
time: action.payload.time || new Date(),
},
];
case AD_SCREEN_EXIT_0:
return [
...state,
{
type: 'stop',
time: action.payload.time || new Date(),
},
];
default:
break;
}
return state;
}
export function inscreenReducer(
state: { [key: string]: any } = {},
action: any,
) {
switch (action.type) {
case PAGE_INIT:
return {};
case AD_SCREEN_ENTER:
case AD_SCREEN_EXIT:
case ARTICLE_PREVIEW_SCREEN_ENTER:
case ARTICLE_PREVIEW_SCREEN_EXIT:
case BOX_SCREEN_ENTER:
case BOX_SCREEN_EXIT: {
return {
...state,
[action.payload.id]: inscreen(state[action.payload.id], action),
};
}
default:
break;
}
return state;
}
export function inscreenReducer0(
state: { [key: string]: any } = {},
action: any,
) {
switch (action.type) {
case PAGE_INIT:
return {};
case AD_SCREEN_ENTER_0:
case AD_SCREEN_EXIT_0: {
return {
...state,
[action.payload.id]: inscreen0(state[action.payload.id], action),
};
}
default:
break;
}
return state;
}