instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
55 lines (52 loc) • 1.38 kB
JSX
import {update_item, update_items, store_items, remove_item} from './base'
const initial_state = {
recruiters: {},
teams: {},
self: null,
}
export function recruiters(state = initial_state, action) {
switch (action.type) {
case "store_recruiters":
return store_items(
state,
"recruiters",
action.recruiters.map(({default_deal: {id: default_deal_id}, ...recruiter}) => ({
...recruiter,
default_deal_id,
}))
)
case "update_profile":
let self = state.self
if (action.profile.id) {
self = action.profile.id
}
let recruiter = action.profile
if (state.recruiters[self]) {
recruiter = {
...state.recruiters[self],
...recruiter,
}
}
if (self) {
return {
...state,
recruiters: {
...state.recruiters,
[self]: recruiter,
},
self,
}
}
return state
case "update_recruiter":
return update_item(state, "recruiters", action.recruiter)
case "update_recruiters":
return update_items(state, "recruiters", action.recruiters)
case "store_teams":
return store_items(state, "teams", action.teams)
case "remove_team":
return remove_item(state, "teams", action.team_id)
default:
return state
}
}