instantjob-recruiter-client
Version:
a set of tools for creating an instantjob recruiter react client
104 lines (85 loc) • 3.98 kB
JavaScript
;
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);
});