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