40 lines
959 B
TypeScript
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,
|
|
};
|
|
} |