gengitkan/client/src/store/reducers/projects.ts

40 lines
959 B
TypeScript

import { FETCH_PROJECTS_SUCCESS, FETCH_PROJECT_MILESTONES_SUCCESS } from "../actions/projects";
export const defaultState = {
byName: {},
milestones: {}
};
export function projectsReducer(state = defaultState, action: any) {
switch (action.type) {
case FETCH_PROJECTS_SUCCESS:
return handleFetchProjectsSuccess(state, action);
case FETCH_PROJECT_MILESTONES_SUCCESS:
return handleFetchProjectMilestonesSuccess(state, action);
default:
return state;
}
}
function handleFetchProjectsSuccess(state: any, action: any) {
const projectsByName = action.projects.reduce((byName: any, project: any) => {
byName[project.full_name] = project;
return byName;
}, {});
return {
...state,
byName: {
...projectsByName,
}
};
}
function handleFetchProjectMilestonesSuccess(state: any, action: any) {
console.log(action.milestones);
return {
...state,
milestones: action.milestones,
};
}