UNPKG

@aller/blink

Version:

A library for tracking user behaviour.

48 lines 2.19 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var actions_1 = require("./actions"); var get_inscreen_time_1 = __importDefault(require("./selectors/get-inscreen-time")); var get_page_state_1 = __importDefault(require("./selectors/get-page-state")); function persistenceMiddleware(persistState) { return function (_a) { var getState = _a.getState; return function (next) { return function (action) { // Execute the action, which might mutate the state var returnValue = next(action); var page = get_page_state_1.default(getState(), action.payload.pageId); switch (action.type) { case actions_1.PAGE_INIT: persistState(page.id + "::pageView", page.state.general.pageView); break; case actions_1.CLICK: persistState(page.id + "::clicked::" + action.payload.id, true); break; case actions_1.ARTICLE_PREVIEW_SCREEN_ENTER: case actions_1.ARTICLE_PREVIEW_SCREEN_EXIT: if (action.payload.url !== page.state.general.url) { var id = action.payload.id; var ap = page.state.articlePreview[id] || {}; persistState(page.id + "::impression::" + id, __assign({}, ap, { inscreenTime: get_inscreen_time_1.default(page.state, id, new Date()) })); } break; } return returnValue; }; }; }; } exports.default = persistenceMiddleware; //# sourceMappingURL=persistenceMiddleware.js.map