UNPKG

@woocommerce/data

Version:
81 lines (80 loc) 2.64 kB
"use strict"; /** * External dependencies */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /** * Internal dependencies */ const action_types_1 = __importDefault(require("./action-types")); const utils_1 = require("../utils"); const utils_2 = require("./utils"); const initialState = { items: {}, errors: {}, data: {}, }; const reducer = (state = initialState, action) => { switch (action.type) { case action_types_1.default.SET_ITEM: const itemData = state.data[action.itemType] || {}; return { ...state, data: { ...state.data, [action.itemType]: { ...itemData, [action.id]: { ...(itemData[action.id] || {}), ...action.item, }, }, }, }; case action_types_1.default.SET_ITEMS: const ids = []; const nextItems = action.items.reduce((result, theItem) => { ids.push(theItem.id); result[theItem.id] = theItem; return result; }, {}); const resourceName = (0, utils_1.getResourceName)(action.itemType, action.query); return { ...state, items: { ...state.items, [resourceName]: { data: ids }, }, data: { ...state.data, [action.itemType]: { ...state.data[action.itemType], ...nextItems, }, }, }; case action_types_1.default.SET_ITEMS_TOTAL_COUNT: const totalResourceName = (0, utils_2.getTotalCountResourceName)(action.itemType, action.query); return { ...state, items: { ...state.items, [totalResourceName]: action.totalCount, }, }; case action_types_1.default.SET_ERROR: return { ...state, errors: { ...state.errors, [(0, utils_1.getResourceName)(action.itemType, action.query)]: action.error, }, }; default: return state; } }; exports.default = reducer;