The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Rocket.Chat/packages/rocketchat-livechat/app/client/views/livechatWindow.js

118 lines
3.0 KiB

/* globals Department, Livechat, LivechatVideoCall */
Template.livechatWindow.helpers({
title() {
return Livechat.title;
},
color() {
return Livechat.color;
},
fontColor() {
return Livechat.fontColor;
},
popoutActive() {
return FlowRouter.getQueryParam('mode') === 'popout';
},
soundActive() {
return Session.get('sound');
},
showRegisterForm() {
if (Session.get('triggered') || Meteor.userId()) {
return false;
}
return Livechat.registrationForm;
},
livechatStarted() {
return Livechat.online !== null;
},
livechatOnline() {
return Livechat.online;
},
offlineMessage() {
return Livechat.offlineMessage;
},
offlineData() {
return {
offlineMessage: Livechat.offlineMessage.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1<br>$2'),
offlineSuccessMessage: Livechat.offlineSuccessMessage,
offlineUnavailableMessage: Livechat.offlineUnavailableMessage.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1<br>$2'),
displayOfflineForm: Livechat.displayOfflineForm
};
},
videoCalling() {
return LivechatVideoCall.isActive();
}
});
Template.livechatWindow.events({
'click .title'() {
parentCall('toggleWindow');
},
'click .popout'(event) {
event.stopPropagation();
parentCall('openPopout');
},
'click .sound'(event) {
event.stopPropagation();
Session.set({sound: !Session.get('sound')});
}
});
Template.livechatWindow.onCreated(function() {
Session.set({sound: true});
const defaultAppLanguage = () => {
let lng = window.navigator.userLanguage || window.navigator.language || 'en';
let regexp = /([a-z]{2}-)([a-z]{2})/;
if (regexp.test(lng)) {
lng = lng.replace(regexp, function(match, ...parts) {
return parts[0] + parts[1].toUpperCase();
});
}
return lng;
};
// get all needed live chat info for the user
Meteor.call('livechat:getInitialData', visitor.getToken(), (err, result) => {
if (err) {
console.error(err);
} else {
if (!result.enabled) {
Triggers.setDisabled();
return parentCall('removeWidget');
}
if (!result.online) {
Triggers.setDisabled();
Livechat.title = result.offlineTitle;
Livechat.offlineColor = result.offlineColor;
Livechat.offlineMessage = result.offlineMessage;
Livechat.displayOfflineForm = result.displayOfflineForm;
Livechat.offlineUnavailableMessage = result.offlineUnavailableMessage;
Livechat.offlineSuccessMessage = result.offlineSuccessMessage;
Livechat.online = false;
} else {
Livechat.title = result.title;
Livechat.onlineColor = result.color;
Livechat.online = true;
}
Livechat.videoCall = result.videoCall;
Livechat.registrationForm = result.registrationForm;
if (result.room) {
RoomHistoryManager.getMoreIfIsEmpty(result.room._id);
visitor.subscribeToRoom(result.room._id);
visitor.setRoom(result.room._id);
}
TAPi18n.setLanguage((result.language || defaultAppLanguage()).split('-').shift());
Triggers.setTriggers(result.triggers);
Triggers.init();
result.departments.forEach((department) => {
Department.insert(department);
});
}
});
});