UNPKG

2.17 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11exports.default = createReducer;
12
13var _Pagination = require('../models/Pagination');
14
15var _Pagination2 = _interopRequireDefault(_Pagination);
16
17function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19function setPagination(currentPagination, nextPagination) {
20 return !nextPagination ? currentPagination : new _Pagination2.default((0, _extends3.default)({}, currentPagination.toObject(), {
21 total: nextPagination.total,
22 totalPages: nextPagination.totalPages
23 }));
24} /** Created by hhj on 8/29/16. */
25
26
27function setPaginationForIds(currentPagination, nextPagination) {
28 return setPagination(currentPagination, (0, _extends3.default)({}, nextPagination, {
29 totalPages: Math.ceil(nextPagination.total / currentPagination.toObject().perPage)
30 }));
31}
32
33/**
34 * @param {Object} actionTypes
35 * @returns {paginationReducer}
36 */
37function createReducer(actionTypes) {
38
39 return function paginationReducer() {
40 var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
41 var action = arguments[1];
42
43
44 var nextPagination = action.meta ? action.meta.pagination : null;
45
46 switch (action.type) {
47 case actionTypes.fetchCollectionSuccess:
48 return setPagination(state, nextPagination);
49
50 case actionTypes.fetchIdsSuccess:
51 return setPaginationForIds(state, nextPagination);
52
53 case actionTypes.gotoPage:
54 return (0, _Pagination.setPage)(state, action.page);
55
56 case actionTypes.setPagination:
57 return new _Pagination2.default(action.pagination);
58
59 case actionTypes.pointCursorTo:
60 var page = Math.ceil(action.cursorAt / state.perPage);
61 return new _Pagination2.default((0, _extends3.default)({}, state.toObject(), {
62 cursorAt: action.cursorAt,
63 page: page
64 }));
65
66 case actionTypes.setPageSize:
67 return (0, _Pagination.setPageSize)(state, action.perPage);
68
69 default:
70 return state;
71 }
72 };
73}
\No newline at end of file