diff options
Diffstat (limited to 'addons/mail/static/src/js/chat_manager.js')
| -rw-r--r-- | addons/mail/static/src/js/chat_manager.js | 15 |
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; } |
