36 lines
1.1 KiB
JavaScript

import { fromJS } from 'immutable';
import { Cursor } from 'netlify-cms-lib-util';
import {
ENTRIES_SUCCESS,
SORT_ENTRIES_SUCCESS,
FILTER_ENTRIES_SUCCESS,
GROUP_ENTRIES_SUCCESS,
} from 'Actions/entries';
// Since pagination can be used for a variety of views (collections
// and searches are the most common examples), we namespace cursors by
// their type before storing them in the state.
export function selectCollectionEntriesCursor(state, collectionName) {
return new Cursor(state.getIn(['cursorsByType', 'collectionEntries', collectionName]));
}
function cursors(state = fromJS({ cursorsByType: { collectionEntries: {} } }), action) {
switch (action.type) {
case ENTRIES_SUCCESS: {
return state.setIn(
['cursorsByType', 'collectionEntries', action.payload.collection],
Cursor.create(action.payload.cursor).store,
);
}
case FILTER_ENTRIES_SUCCESS:
case GROUP_ENTRIES_SUCCESS:
case SORT_ENTRIES_SUCCESS: {
return state.deleteIn(['cursorsByType', 'collectionEntries', action.payload.collection]);
}
default:
return state;
}
}
export default cursors;