summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/chat_manager.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/static/src/js/chat_manager.js')
-rw-r--r--addons/mail/static/src/js/chat_manager.js15
1 files changed, 10 insertions, 5 deletions
diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js
index 51598896654..783ee6b0c14 100644
--- a/addons/mail/static/src/js/chat_manager.js
+++ b/addons/mail/static/src/js/chat_manager.js
@@ -32,7 +32,7 @@ function add_message (data, options) {
var msg = _.findWhere(messages, { id: data.id });
if (!msg) {
- msg = make_message(data, options.channel_id);
+ msg = make_message(data);
// Keep the array ordered by date when inserting the new message
messages.splice(_.sortedIndex(messages, msg, 'date'), 0, msg);
if (options.channel_id) {
@@ -59,13 +59,11 @@ function add_message (data, options) {
if (!options.silent) {
chat_manager.bus.trigger('new_message', msg);
}
- } else if (msg && options.channel_id !== undefined) {
- add_channel_to_message(msg, options.channel_id);
}
return msg;
}
-function make_message (data, channel_id) {
+function make_message (data) {
var msg = {
id: data.id,
author_id: data.author_id,
@@ -78,7 +76,7 @@ function make_message (data, channel_id) {
email_from: data.email_from,
record_name: data.record_name,
tracking_value_ids: data.tracking_value_ids,
- channel_ids: (channel_id !== undefined ? [channel_id] : []),
+ channel_ids: data.channel_ids,
model: data.model,
res_id: data.res_id,
};
@@ -116,6 +114,13 @@ function make_message (data, channel_id) {
if (_.contains(data.starred_partner_ids, session.partner_id)) {
msg.is_starred = true;
}
+ var real_channels = _.without(msg.channel_ids, 'channel_inbox', 'channel_starred');
+ var origin = real_channels.length ? real_channels[0] : undefined;
+ var channel;
+ if (origin && (channel = _.findWhere(channels, {id: origin}))) {
+ msg.origin_id = origin;
+ msg.origin_name = channel.name;
+ }
return msg;
}