UNPKG

@lonelyplanet/dotcom-core

Version:

This package is meant to house some of our more common UI and shared libs across dotcom applications.

49 lines (48 loc) 2.1 kB
var __assign = (this && this.__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; }; var _a; import { handleActions } from "redux-actions"; import { ADD_BOOKMARK_DONE, LIST_CREATE_DONE, LIST_UPDATE_DONE, UPDATE_BOOKMARK_DONE, } from "../constants/bookmark"; var initialState = { lists: [], }; export var bookmark = handleActions((_a = {}, _a[ADD_BOOKMARK_DONE] = function (state, action) { return __assign({}, state, { lists: state.lists.map(function (list) { if (list.id === action.payload.listId) { return __assign({}, list, { entries: list.entries.concat([ __assign({}, action.payload.bookmark), ]) }); } return list; }) }); }, _a[UPDATE_BOOKMARK_DONE] = function (state, action) { return (__assign({}, state, { lists: state.lists.map(function (list) { if (list.id === action.payload.listId) { var entries = list.entries.map(function (entry) { if (entry.id === action.payload.bookmark.id) { return __assign({}, action.payload.bookmark); } return entry; }); return __assign({}, list, { entries: entries }); } return list; }) })); }, _a[LIST_CREATE_DONE] = function (state, action) { return (__assign({}, state, { lists: state.lists.concat([ __assign({}, action.payload), ]) })); }, _a[LIST_UPDATE_DONE] = function (state, action) { return (__assign({}, state, { lists: state.lists.map(function (list) { if (list.id === action.payload.id) { return __assign({}, list, action.payload, { entries: list.entries }); } return list; }) })); }, _a), initialState); export default bookmark;