UNPKG

instantjob-recruiter-client

Version:

a set of tools for creating an instantjob recruiter react client

268 lines (211 loc) 9.64 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _reactRouter = require('react-router'); var _store = require('common/store'); var _store2 = _interopRequireDefault(_store); var _channel = require('common/channel'); var _channel2 = _interopRequireDefault(_channel); var _request = require('common/request'); var _request2 = _interopRequireDefault(_request); var _utilities = require('common/utilities'); var _authentication = require('common/authentication'); var _profile = require('actions/profile'); var _messages = require('actions/messages'); var _mutes = require('actions/mutes'); var _users = require('actions/users'); var _missions = require('actions/missions'); var _recruiters = require('actions/recruiters'); var _display = require('actions/display'); var _fields = require('actions/fields'); var _calendar = require('actions/calendar'); var _demands = require('actions/demands'); var _shifts = require('actions/shifts'); var _users2 = require('selectors/users'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var recruiter_requests = function recruiter_requests(recruiter_id, dispatch) { _request2.default.get('recruiters/' + recruiter_id + '/recipients').then(function (users) { return dispatch((0, _users.store_recruiter_users)(users.map(function (user) { return user.id; }))); }); _request2.default.get('recruiters/' + recruiter_id + '/muted_users').then(function (muted_users) { return dispatch((0, _mutes.store_muted_users)(muted_users.map(function (user) { return user.id; }))); }); _request2.default.get('recruiters/' + recruiter_id).then(function (recruiter) { dispatch((0, _profile.update_profile)(recruiter)); if (!recruiter.first_name || recruiter.first_name == "" || !recruiter.last_name || recruiter.last_name == "") { dispatch((0, _display.alert_info)("Veuillez renseigner votre prénom et nom.")); _reactRouter.browserHistory.push('/settings'); } }); _request2.default.get('recruiters/' + recruiter_id + '/last_messages').then(function (messages) { return dispatch((0, _messages.store_messages)(messages)); }); _request2.default.get('recruiters/' + recruiter_id + '/unread_messages').then(function (messages) { return dispatch((0, _messages.store_messages)(messages)); }); _request2.default.get('recruiters/' + recruiter_id + '/demands').then(function (demands) { return dispatch((0, _demands.store_demands)(demands)); }); _request2.default.get('recruiters/' + recruiter_id + '/applied_users').then(function (users) { return dispatch((0, _users.store_users)(users)); }); }; var agency_requests = function agency_requests(agency_id, dispatch) { _request2.default.get_paginated('agencies/' + agency_id + '/deals', {}, function (deals) { return dispatch((0, _missions.store_deals)(deals)); }); _request2.default.get('agencies/' + agency_id + '/fields').then(function (fields) { return dispatch((0, _fields.store_fields)(fields)); }); _request2.default.get('agencies/' + agency_id + '/workplaces').then(function (workplaces) { return dispatch((0, _missions.store_workplaces)(workplaces)); }); _request2.default.get('agencies/' + agency_id + '/recruiters').then(function (recruiters) { return dispatch((0, _recruiters.store_recruiters)(recruiters)); }); _request2.default.get('agencies/' + agency_id + '/teams').then(function (teams) { return dispatch((0, _recruiters.store_teams)(teams)); }); _request2.default.get_paginated('agencies/' + agency_id + '/users', {}, function (users) { return dispatch((0, _users.store_users)(users)); }); }; var agency_channel = function agency_channel(recruiter_id, dispatch) { var channel = new _channel2.default("RecruiterAgency"); channel.register('create_message', function (message) { var state = _store2.default.getState(); dispatch((0, _messages.store_messages)([message])); _request2.default.get('recruiters/' + recruiter_id + '/recipients').then(function (users) { users = users.map(function (user) { return user.id; }); if (message.sender_type == 'User' && (0, _utilities.array_contains)(users, message.sender_id)) { var p = new _promise2.default(function (resolve, reject) { if (window.Notification) { if (window.Notification.permission === "granted") { resolve(); } else if (window.Notification.permission !== "denied") { window.Notification.requestPermission(function (status) { if (status === "granted") { resolve(); } else { reject(); } }); } else { reject(); } } else { reject(); } }).then(function () { var full_name = (0, _users2.get_users)(state)[message.sender_id].full_name; var n = new Notification(full_name, { body: message.content }); setTimeout(n.close.bind(n), 5000); }); } dispatch((0, _users.store_recruiter_users)(users)); }); }); if (window.Notification) { if (window.Notification.permission !== "granted") { var _Notification = window.Notification; _Notification.requestPermission(function (status) { if (_Notification.permission !== status) { _Notification.permission = status; } }); } } else { dispatch((0, _display.alert_info)("Votre navigateur ne vous permet pas de recevoir des notifications pour les nouveaux messages des candidats. Veuillez utiliser Chrome.")); } channel.register_store('event', function (events) { var _split_array = (0, _utilities.split_array)(events, (0, _utilities.property_getter)('calenderable_type'), ['User', 'UserAgency', 'Mission', 'Shift']), User = _split_array.User, UserAgency = _split_array.UserAgency, Mission = _split_array.Mission, Shift = _split_array.Shift; var user_events = [].concat((0, _toConsumableArray3.default)(User), (0, _toConsumableArray3.default)(UserAgency)); if (!(0, _utilities.empty_array)(user_events)) { dispatch((0, _calendar.store_events)(user_events)); } if (!(0, _utilities.empty_array)(Mission)) { dispatch((0, _missions.store_mission_events)(Mission)); } if (!(0, _utilities.empty_array)(Shift)) { dispatch((0, _shifts.store_shift_events)(Shift)); } }); channel.register_store('message', function (messages) { return dispatch((0, _messages.store_messages)(messages)); }); channel.register_store('user', function (users) { return dispatch((0, _users.update_users)(users)); }); channel.register_store('user_agency', function (users) { return dispatch((0, _users.update_users)(users)); }); channel.register_store('mission', function (missions) { return dispatch((0, _missions.update_missions)(missions)); }); channel.register_store('deal', function (deals) { return dispatch((0, _missions.update_deals)(deals)); }); channel.register_store('workplace', function (workplaces) { return dispatch((0, _missions.update_workplaces)(workplaces)); }); channel.register_store('recruiter', function (recruiters) { return dispatch((0, _recruiters.update_recruiters)(recruiters)); }); channel.register_store('agency', function (_ref) { var _ref2 = (0, _slicedToArray3.default)(_ref, 1), agency = _ref2[0]; return dispatch((0, _profile.update_profile)({ agency: agency })); }); channel.register_store('field', function (fields) { return dispatch((0, _fields.update_fields)(fields)); }); channel.register_store('value', function (values) { return dispatch((0, _fields.update_values)(values)); }); channel.register_store('demand', function (demands) { return dispatch((0, _demands.store_demands)(demands)); }); channel.register_store('shift', function (shifts) { return dispatch((0, _shifts.store_shifts)(shifts)); }); channel.register_store('team', function (teams) { return dispatch((0, _recruiters.store_teams)(teams)); }); channel.register_destroy('team', function (team_id) { return dispatch((0, _recruiters.remove_team)(team_id)); }); }; exports.default = function () { var dispatch = _store2.default.dispatch; _request2.default.get('profile').then(function (profile) { dispatch((0, _profile.update_profile)(profile)); var recruiter_id = _store2.default.getState().profile.id; var token = _store2.default.getState().authentication.token; recruiter_requests(recruiter_id, dispatch); return _request2.default.get('recruiters/' + recruiter_id + '/agency').then(function (agency) { dispatch((0, _profile.update_profile)({ agency: agency })); var state = _store2.default.getState(); var agency_id = state.profile.agency.id; agency_requests(agency_id, dispatch); (0, _channel.init_websocket)({ client_type: 'recruiter', id: recruiter_id, auth_token: window.btoa(token) }); agency_channel(recruiter_id, dispatch); }); }, _authentication.action_logout); };