UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

89 lines (74 loc) 3.16 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.get_current_user = exports.get_current_recipient = exports.get_users = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _base = require('selectors/base'); var _fields = require('selectors/fields'); var _utilities = require('common/utilities'); var _users = require('common/users'); var _constants = require('common/constants'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var get_raw_users = function get_raw_users(state) { return state.users.users; }; var get_current_recipient_id = function get_current_recipient_id(state) { return state.users.current_recipient; }; var get_current_user_id = function get_current_user_id(state) { return state.users.current_user; }; var get_raw_mission_users = function get_raw_mission_users(state) { return state.missions.users; }; var get_users = exports.get_users = (0, _base.tolerant_selector)([get_raw_users, _fields.get_fields_by_user, get_raw_mission_users], function (users, fields_by_user, mission_users) { return (0, _utilities.map_hash)(users, function (user) { var id = user.id; var fields = (0, _utilities.array_from_hash)(fields_by_user[id]) || []; var instant_job_users_fields_filled = _constants.instant_job_users_fields.filter(function (_ref) { var field_name = _ref.id; return user[field_name]; }).length; var profile_rate = (fields.filter(function (_ref2) { var empty = _ref2.empty; return !empty; }).length + instant_job_users_fields_filled) / (fields.length + _constants.instant_job_users_fields.length); var missions_count = 0; (0, _utilities.map_hash)(mission_users, function (users_status) { if (users_status) { switch (users_status[id]) { case 'assigned': missions_count += 1; break; } } }); return (0, _extends3.default)({}, user, { full_name: ((user.last_name || "") + ' ' + (user.first_name || "")).trim() || user.email, status: (0, _users.get_user_status)(user), fields: fields, missions_count: missions_count, profile_rate: profile_rate, update: function update(user) { (0, _users.action_update_user)((0, _extends3.default)({}, user, { id: id })); }, toggle_blacklist: function toggle_blacklist() { (0, _users.action_toggle_blacklist_user)(user); }, open_chat: function open_chat() { (0, _users.action_open_chat)(user); } }); }); }); function make_user(users, id, empty) { return id && users[id] || empty; } var get_current_recipient = exports.get_current_recipient = (0, _base.tolerant_selector)([get_users, get_current_recipient_id], function (users, current_recipient_id) { return make_user(users, current_recipient_id, null); }); var get_current_user = exports.get_current_user = (0, _base.tolerant_selector)([get_users, get_current_user_id], function (users, current_user_id) { return make_user(users, current_user_id, {}); });