Skip to content

Commit

Permalink
Merge pull request #7639 from RocketChat/all-messages-email
Browse files Browse the repository at this point in the history
[FIX] Wrong email subject when "All Messages" setting enabled
  • Loading branch information
rodrigok authored Aug 8, 2017
2 parents e17e6fd + 3899052 commit c409e41
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 44 deletions.
1 change: 1 addition & 0 deletions packages/rocketchat-i18n/i18n/en.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1135,6 +1135,7 @@
"Offline_form_unavailable_message": "Offline form unavailable message",
"Offline_Link_Message": "GO TO MESSAGE",
"Offline_Mention_Email": "You have been mentioned by __user__ in #__room__",
"Offline_Mention_All_Email": "__user__ has posted a message in #__room__",
"Offline_message": "Offline message",
"Offline_success_message": "Offline success message",
"Offline_unavailable": "Offline unavailable",
Expand Down
87 changes: 43 additions & 44 deletions packages/rocketchat-lib/server/lib/sendEmailOnMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,6 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
return message;
}

let emailSubject;
const usersToSendEmail = {};
const directMessage = room.t === 'd';

if (directMessage) {
usersToSendEmail[message.rid.replace(message.u._id, '')] = 1;

emailSubject = TAPi18n.__('Offline_DM_Email', {
user: message.u.username
});

} else {
if (message.mentions) {
message.mentions.forEach(function(mention) {
usersToSendEmail[mention._id] = 1;
});
}

emailSubject = TAPi18n.__('Offline_Mention_Email', {
user: message.u.username,
room: room.name
});
}

const getMessageLink = (room, sub) => {
const roomPath = RocketChat.roomTypes.getRouteLink(room.t, sub);
const path = Meteor.absoluteUrl(roomPath ? roomPath.replace(/^\//, '') : '');
Expand Down Expand Up @@ -63,28 +39,33 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
const footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || '');
messageHTML = messageHTML.replace(/\n/gm, '<br/>');

RocketChat.models.Subscriptions.findWithSendEmailByRoomId(room._id).forEach((sub) => {
if (sub.disableNotifications) {
delete usersToSendEmail[sub.u._id];
} else {
switch (sub.emailNotifications) {
case 'all':
usersToSendEmail[sub.u._id] = 'force';
break;
case 'mentions':
if (usersToSendEmail[sub.u._id]) {
usersToSendEmail[sub.u._id] = 'force';
}
break;
case 'nothing':
delete usersToSendEmail[sub.u._id];
break;
case 'default':
break;
const usersToSendEmail = {};
if (room.t === 'd') {
usersToSendEmail[message.rid.replace(message.u._id, '')] = 'direct';
} else {
RocketChat.models.Subscriptions.findWithSendEmailByRoomId(room._id).forEach((sub) => {
if (sub.disableNotifications) {
return delete usersToSendEmail[sub.u._id];
}
}
});

const emailNotifications = sub.emailNotifications;

if (emailNotifications !== 'nothing') {
const mentionedUser = message.mentions.find((mention) => {
return mention._id === sub.u._id;
});

if (emailNotifications === 'mentions' || mentionedUser) {
return usersToSendEmail[sub.u._id] = 'mention';
}

if (emailNotifications === 'all') {
return usersToSendEmail[sub.u._id] = 'all';
}
}
delete usersToSendEmail[sub.u._id];
});
}
const userIdsToSendEmail = Object.keys(usersToSendEmail);

let defaultLink;
Expand Down Expand Up @@ -114,6 +95,24 @@ RocketChat.callbacks.add('afterSaveMessage', function(message, room) {
return;
}

let emailSubject;
switch (usersToSendEmail[user._id]) {
case 'all':
emailSubject = TAPi18n.__('Offline_Mention_All_Email', {
user: message.u.username,
room: room.name || room.label
});
break;
case 'direct':
emailSubject = TAPi18n.__('Offline_DM_Email', { user: message.u.username });
break;
case 'mention':
emailSubject = TAPi18n.__('Offline_Mention_Email', {
user: message.u.username,
room: room.name
});
break;
}
user.emails.some((email) => {
if (email.verified) {
email = {
Expand Down

0 comments on commit c409e41

Please sign in to comment.