import matchSorter from 'match-sorter';
import { request, invalidate, receive, initState, toArray } from '../boilerplate';
import { REQUEST_CHECKLIST, RECEIVE_CHECKLIST, INVALIDATE_CHECKLIST, SEARCH_CHECKLIST } from '../actionTypes';
function search(state, action) {
let searchResults = [];
if (action.searchString.length > 1 && state.data.items.length > 0) {
const checkLists = state.data.items;
const checkListResults = matchSorter(toArray(checkLists), action.searchString, {
keys: ['checklistCdDescr', 'information'],
threshold: matchSorter.rankings.WORD_STARTS_WITH,
});
searchResults = checkListResults;
}
const nextState = {
searchResults,
};
return { ...state, ...nextState };
}
export default function(state = initState, action) {
switch (action.type) {
case REQUEST_CHECKLIST:
return request(state, action);
case RECEIVE_CHECKLIST:
return receive(state, action);
case INVALIDATE_CHECKLIST:
return invalidate(state, action);
case SEARCH_CHECKLIST:
return search(state, action);
default:
return state;
}
}
|