Files
mlb-gameday-dotnet-react/app/src/components/divisions/reducer.ts
2023-06-01 08:52:05 -05:00

51 lines
1.1 KiB
TypeScript

import { IDivisionsState } from './IDivisionsState';
import { IDivision } from '../../models/IDivision';
export type Action =
| { type: 'SET_ITEMS'; payload: IDivision[] }
| { type: 'SET_CURRENT_PAGE_NUMBER'; payload: number }
| { type: 'SET_PAGE_SIZE'; payload: number }
| { type: 'SET_IS_PANEL_OPEN'; payload: boolean };
export const initialState: IDivisionsState = {
items: [],
currentPageNumber: 1,
pageSize: 10,
isPanelOpen: false
};
export const reducer = (
state: IDivisionsState,
action: Action
): IDivisionsState => {
switch (action.type) {
case 'SET_ITEMS': {
return {
...state,
items: action.payload
};
}
case 'SET_CURRENT_PAGE_NUMBER': {
return {
...state,
currentPageNumber: action.payload
};
}
case 'SET_PAGE_SIZE': {
return {
...state,
pageSize: action.payload
};
}
case 'SET_IS_PANEL_OPEN': {
return {
...state,
isPanelOpen: action.payload
};
}
default: {
return state;
}
}
};