UNPKG

redux-cached-api-middleware

Version:
97 lines (84 loc) 2.79 kB
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; import * as types from './actionTypes'; export var DEFAULT_KEY_STATE = { fetching: false, fetched: false, error: false, timestamp: null, successPayload: null, errorPayload: null }; var DEFAULT_STATE = {}; export default (function () { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE; var _ref = arguments[1]; var type = _ref.type, payload = _ref.payload, meta = _ref.meta; switch (type) { case types.CLEAR_CACHE: { if (payload && state[payload]) { var newState = _extends({}, state); delete newState[payload]; return newState; } return DEFAULT_STATE; } case types.INVALIDATE_CACHE: { var invalidStateKeys = Object.keys(state).filter(function (item) { return state[item].fetching; }); if (invalidStateKeys.length) { var _newState = _extends({}, state); invalidStateKeys.forEach(function (key) { _newState[key].fetching = false; }); return _newState; } return state; } case types.FETCH_START: { var _extends2; var key = meta.cache.key; // eslint-disable-line prefer-destructuring return _extends({}, state, (_extends2 = {}, _extends2[key] = _extends({}, state[key] || DEFAULT_KEY_STATE, { fetching: true }), _extends2)); } case types.FETCH_SUCCESS: { var _key = meta.cache.key; // eslint-disable-line prefer-destructuring if (_key in state) { var _extends3; return _extends({}, state, (_extends3 = {}, _extends3[_key] = _extends({}, state[_key], { fetching: false, fetched: true, error: false, timestamp: new Date().getTime(), successPayload: payload }), _extends3)); } return state; } case types.FETCH_ERROR: { var _key2 = meta.cache.key; // eslint-disable-line prefer-destructuring if (_key2 in state) { var _extends4; return _extends({}, state, (_extends4 = {}, _extends4[_key2] = _extends({}, state[_key2], { fetching: false, fetched: true, error: true, timestamp: new Date().getTime(), errorPayload: payload }), _extends4)); } return state; } default: return state; } }); //# sourceMappingURL=reducer.js.map