instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
89 lines (74 loc) • 3.16 kB
JavaScript
;
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, {});
});