@aller/blink
Version:
A library for tracking user behaviour.
115 lines (110 loc) • 2.76 kB
text/typescript
import {
DFP_ADUNIT_PATH,
DFP_NAME,
DFP_RENDERED,
SCROLL_POS_SLOT_RENDER_ENDED,
DFP_LOADED,
SCROLL_POS_SLOT_ONLOAD,
SCROLL_POS_INSCREEN_DFP,
DFP_INSCREEN,
SCROLL_POS_AD_LOAD,
SCROLL_OFFSET_TOP,
SCROLL_OFFSET_HEIGHT,
DFP_ADVERTISER_ID,
DFP_CAMPAIGN_ID,
DFP_CREATIVE_ID,
DFP_LINE_ITEM_ID,
DFP_SOURCE_AGNOSTIC_CREATIVE_ID,
DFP_SOURCE_AGNOSTIC_LINE_ITEM_ID,
DFP_SIZE,
DFP_BIDDER,
} from '../events/consts';
import {
DFP_SLOT_RENDER_ENDED,
AD_SCREEN_ENTER,
AD_SCREEN_ENTER_0,
DFP_SLOT_ON_LOAD,
DFP_IMPRESSION_VIEWABLE,
AD_LOAD_START,
PAGE_INIT,
} from '../actions';
export function singleAd(state = {}, action: any) {
switch (action.type) {
case AD_SCREEN_ENTER:
case AD_SCREEN_ENTER_0:
return state;
case DFP_SLOT_RENDER_ENDED: {
const {
adUnitPath,
advertiserId,
bidder,
campaignId,
creativeId,
lineItemId,
size,
sourceAgnosticCreativeId,
sourceAgnosticLineItemId,
scrollTop,
} = action.payload;
return {
...state,
[ ]: adUnitPath,
[ ]: advertiserId,
[ ]: bidder,
[ ]: campaignId,
[ ]: creativeId,
[ ]: lineItemId,
[ ]: size,
[ ]: sourceAgnosticCreativeId,
[ ]: sourceAgnosticLineItemId,
[ ]: scrollTop,
[ ]: 1,
};
}
case DFP_SLOT_ON_LOAD: {
return {
...state,
[ ]: action.payload.scrollTop,
[ ]: 1,
[ ]: action.payload.name,
};
}
case DFP_IMPRESSION_VIEWABLE: {
return {
...state,
[ ]: action.payload.scrollTop,
[ ]: 1,
};
}
case AD_LOAD_START: {
return {
...state,
[ ]: action.payload.scrollTop,
[ ]: action.payload.offsetTop,
[ ]: action.payload.offsetHeight,
};
}
default:
break;
}
return state;
}
export default function ads(state: { [key: string]: any } = {}, action: any) {
switch (action.type) {
case PAGE_INIT:
return {}; // Flush the store on pageLoad
case DFP_SLOT_RENDER_ENDED:
case DFP_SLOT_ON_LOAD:
case DFP_IMPRESSION_VIEWABLE:
case AD_LOAD_START:
case AD_SCREEN_ENTER:
case AD_SCREEN_ENTER_0:
return {
...state,
[ ]: singleAd(state[action.payload.id], action),
};
default:
break;
}
return state;
}