instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
26 lines (22 loc) • 1.02 kB
JSX
import {tolerant_selector} from 'selectors/base'
import store from 'common/store'
import {action_update_recruiter, recruiter_full_name} from 'common/recruiters'
import {map_hash, array_from_hash} from 'common/utilities'
import {remove_team} from 'actions/recruiters'
const get_raw_teams = (state) => state.recruiters.teams
const get_raw_recruiters = (state) => state.recruiters.recruiters
export const get_recruiters = tolerant_selector(
[get_raw_recruiters, get_raw_teams],
(recruiters, teams) => map_hash(recruiters, (recruiter) => ({
...recruiter,
full_name: recruiter_full_name(recruiter),
team: recruiter.team_id ? teams[recruiter.team_id] || {} : null,
update(new_recruiter) {
action_update_recruiter({id: recruiter.id, ...new_recruiter})
if (array_from_hash(recruiters).filter(({id, team_id}) => id != recruiter.id && team_id == recruiter.team_id).length == 0) {
store.dispatch(remove_team(recruiter.team_id))
}
},
}))
)
export const get_teams = get_raw_teams