UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

115 lines (110 loc) 2.76 kB
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, [DFP_ADUNIT_PATH]: adUnitPath, [DFP_ADVERTISER_ID]: advertiserId, [DFP_BIDDER]: bidder, [DFP_CAMPAIGN_ID]: campaignId, [DFP_CREATIVE_ID]: creativeId, [DFP_LINE_ITEM_ID]: lineItemId, [DFP_SIZE]: size, [DFP_SOURCE_AGNOSTIC_CREATIVE_ID]: sourceAgnosticCreativeId, [DFP_SOURCE_AGNOSTIC_LINE_ITEM_ID]: sourceAgnosticLineItemId, [SCROLL_POS_SLOT_RENDER_ENDED]: scrollTop, [DFP_RENDERED]: 1, }; } case DFP_SLOT_ON_LOAD: { return { ...state, [SCROLL_POS_SLOT_ONLOAD]: action.payload.scrollTop, [DFP_LOADED]: 1, [DFP_NAME]: action.payload.name, }; } case DFP_IMPRESSION_VIEWABLE: { return { ...state, [SCROLL_POS_INSCREEN_DFP]: action.payload.scrollTop, [DFP_INSCREEN]: 1, }; } case AD_LOAD_START: { return { ...state, [SCROLL_POS_AD_LOAD]: action.payload.scrollTop, [SCROLL_OFFSET_TOP]: action.payload.offsetTop, [SCROLL_OFFSET_HEIGHT]: 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, [action.payload.id]: singleAd(state[action.payload.id], action), }; default: break; } return state; }