1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends2 = require('babel-runtime/helpers/extends');
|
8 |
|
9 | var _extends3 = _interopRequireDefault(_extends2);
|
10 |
|
11 | exports.default = createReducer;
|
12 |
|
13 | var _Pagination = require('../models/Pagination');
|
14 |
|
15 | var _Pagination2 = _interopRequireDefault(_Pagination);
|
16 |
|
17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 | function 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 | }
|
25 |
|
26 |
|
27 | function 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 |
|
35 |
|
36 |
|
37 | function 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 |