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

48 lines
1.0 KiB
TypeScript

import { ITeamsState } from './ITeamsState';
import { ITeam } from '../../models/ITeam';
export type Action =
| { type: 'SET_ITEMS'; payload: ITeam[] }
| { type: 'SET_CURRENT_PAGE_NUMBER'; payload: number }
| { type: 'SET_PAGE_SIZE'; payload: number }
| { type: 'SET_IS_PANEL_OPEN'; payload: boolean };
export const initialState: ITeamsState = {
items: [],
currentPageNumber: 1,
pageSize: 10,
isPanelOpen: false
};
export const reducer = (state: ITeamsState, action: Action): ITeamsState => {
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;
}
}
};