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/lib/triggers.js

81 lines
1.6 KiB

this.Triggers = (function() {
var triggers = [];
var initiated = false;
var requests = [];
var fire = function(actions) {
if (Meteor.userId()) {
// console.log('already logged user - does nothing');
return;
}
actions.forEach(function(action) {
if (action.name === 'send-message') {
var roomId = visitor.getRoom();
if (!roomId) {
roomId = Random.id();
visitor.setRoom(roomId);
}
Session.set('triggered', true);
ChatMessage.insert({
msg: action.params.msg,
rid: roomId,
u: {
username: action.params.name
}
});
parentCall('openWidget');
}
});
};
var processRequest = function(request) {
if (!initiated) {
return requests.push(request);
}
triggers.forEach(function(trigger) {
trigger.conditions.forEach(function(condition) {
switch (condition.name) {
case 'page-url':
if (request.location.href.match(new RegExp(condition.value))) {
fire(trigger.actions);
}
break;
case 'time-on-site':
if (trigger.timeout) {
clearTimeout(trigger.timeout);
}
trigger.timeout = setTimeout(function() {
fire(trigger.actions);
}, parseInt(condition.value) * 1000);
break;
}
});
});
};
var setTriggers = function(newTriggers) {
triggers = newTriggers;
};
var init = function() {
initiated = true;
if (requests.length > 0 && triggers.length > 0) {
requests.forEach(function(request) {
processRequest(request);
});
requests = [];
}
};
return {
init: init,
processRequest: processRequest,
setTriggers: setTriggers
};
}());