UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

104 lines (85 loc) 3.98 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.get_unread_messages = exports.get_recipients = exports.get_messages = undefined; var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _extends3 = require('babel-runtime/helpers/extends'); var _extends4 = _interopRequireDefault(_extends3); var _base = require('./base'); var _users = require('./users'); var _moment = require('../common/moment'); var _moment2 = _interopRequireDefault(_moment); var _messages = require('../common/messages'); var _utilities = require('../common/utilities'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var get_recruiter_users = function get_recruiter_users(state) { return state.users.recruiter_users; }; var get_muted_users = function get_muted_users(state) { return state.mutes.muted_users; }; var get_raw_messages = function get_raw_messages(state) { return state.messages.messages; }; var get_raw_recruiters = function get_raw_recruiters(state) { return state.recruiters.recruiters; }; var get_raw_users = function get_raw_users(state) { return state.users.users; }; var get_messages = exports.get_messages = (0, _base.tolerant_selector)([get_raw_messages, get_raw_recruiters, get_raw_users], function (messages, recruiters, users) { return (0, _utilities.array_from_hash)(messages).map(function (message) { return (0, _extends4.default)({}, message, { sender: message.sender_type == 'User' ? users[message.sender_id] : recruiters[message.sender_id] }); }); }); var get_conversations = (0, _base.tolerant_selector)([get_messages], function (messages) { return messages.reduce(function (conversations, message) { var user = message.recipient_type == 'User' ? message.recipient_id : message.sender_id; var conversation = conversations[user]; if (!conversation) { conversation = []; } return (0, _extends4.default)({}, conversations, (0, _defineProperty3.default)({}, user, [].concat((0, _toConsumableArray3.default)(conversation), [message]))); }, {}); }); var get_recipients = exports.get_recipients = (0, _base.tolerant_selector)([_users.get_users, get_recruiter_users, get_messages], function (users, recruiter_users, messages) { return recruiter_users.filter(function (user) { return users[user]; }).map(function (user_id) { var agency_messages = messages.filter(function (message) { return (0, _messages.with_recipient)(message, user_id); }); var last_message = void 0; if (agency_messages.length == 0) { last_message = {}; } else { last_message = agency_messages.reduce(function (last_message, message) { return (0, _moment2.default)(message.created_at).isAfter(last_message.created_at) ? message : last_message; }); } var unread_messages = agency_messages.reduce(function (unread_messages, message) { if (message.recipient_type === 'Agency' && message.read_at == null) { return unread_messages + 1; } else { return unread_messages; } }, 0); return (0, _extends4.default)({}, users[user_id], { last_message: last_message, unread_messages: unread_messages }); }).sort(function (u1, u2) { return u2.last_message.created_at && u1.last_message.created_at ? (0, _moment2.default)(u2.last_message.created_at).isAfter(u1.last_message.created_at) ? 1 : -1 : u2.last_message.created_at ? 1 : -1; }); }); var get_unread_messages = exports.get_unread_messages = (0, _base.tolerant_selector)([get_recipients], function (recipients) { return recipients.reduce(function (unread_messages, recipient) { return unread_messages + recipient.unread_messages; }, 0); });