daddy/client/src/store/reducers/workgroups.ts

38 lines
1.1 KiB
TypeScript

import { Action } from "redux";
import { User } from "../../types/user";
import { SET_CURRENT_USER, setCurrentUserAction } from "../actions/auth";
import { FETCH_PROFILE_SUCCESS, fetchProfileSuccessAction, updateProfileSuccessAction, UPDATE_PROFILE_SUCCESS, updateProfileRequestAction } from "../actions/profile";
import { Workgroup } from "../../types/workgroup";
import { FETCH_WORKGROUPS_SUCCESS, fetchWorkgroupsSuccessAction } from "../actions/workgroups";
export interface WorkgroupsState {
workgroupsById: { [id in string]: Workgroup }
}
const defaultState = {
workgroupsById: {}
};
export function workgroupsReducer(state = defaultState, action: Action): WorkgroupsState {
switch (action.type) {
case FETCH_WORKGROUPS_SUCCESS:
return handleFetchWorkgroups(state, action as fetchWorkgroupsSuccessAction);
}
return state;
}
function handleFetchWorkgroups(state: WorkgroupsState, { workgroups }: fetchWorkgroupsSuccessAction): WorkgroupsState {
const workgroupsById = {
...state.workgroupsById,
};
workgroups.forEach(wg => {
workgroupsById[wg.id] = wg;
});
return {
...state,
workgroupsById,
};
};