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, }; };