UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

64 lines (58 loc) 2.22 kB
import {tolerant_selector} from 'selectors/base' import {get_fields_by_user} from 'selectors/fields' import {map_hash, array_from_hash} from 'common/utilities' import { get_user_status, action_update_user, action_toggle_blacklist_user, action_open_chat, } from 'common/users' import {instant_job_users_fields} from 'common/constants' const get_raw_users = (state) => state.users.users const get_current_recipient_id = (state) => state.users.current_recipient const get_current_user_id = (state) => state.users.current_user const get_raw_mission_users = (state) => state.missions.users export const get_users = tolerant_selector( [get_raw_users, get_fields_by_user, get_raw_mission_users], (users, fields_by_user, mission_users) => map_hash(users, (user) => { const {id} = user const fields = array_from_hash(fields_by_user[id]) || [] const instant_job_users_fields_filled = instant_job_users_fields.filter(({id: field_name}) => user[field_name]).length const profile_rate = (fields.filter(({empty}) => !empty).length + instant_job_users_fields_filled) / (fields.length + instant_job_users_fields.length) let missions_count = 0 map_hash(mission_users, (users_status) => { if (users_status) { switch (users_status[id]) { case 'assigned': missions_count += 1 break } } }) return { ...user, full_name: `${user.last_name || ""} ${user.first_name || ""}`.trim() || user.email, status: get_user_status(user), fields, missions_count, profile_rate, update(user) { action_update_user({...user, id}) }, toggle_blacklist() { action_toggle_blacklist_user(user) }, open_chat() { action_open_chat(user) }, } }) ) function make_user(users, id, empty) { return (id && users[id]) || empty } export const get_current_recipient = tolerant_selector( [get_users, get_current_recipient_id], (users, current_recipient_id) => make_user(users, current_recipient_id, null) ) export const get_current_user = tolerant_selector( [get_users, get_current_user_id], (users, current_user_id) => make_user(users, current_user_id, {}) )