[FIX] mail: synchronize last_message_seen_id between tabs
When using multi tabs or browsers, the 'New messages' separator in threads was sometimes wrongly displayed (displayed over messages already seen in another tab or browser).
This commit is contained in:
@@ -445,7 +445,7 @@ class Channel(models.Model):
|
||||
if self.channel_message_ids.ids:
|
||||
last_message_id = self.channel_message_ids.ids[0] # zero is the index of the last message
|
||||
self.env['mail.channel.partner'].search([('channel_id', 'in', self.ids), ('partner_id', '=', self.env.user.partner_id.id)]).write({'seen_message_id': last_message_id})
|
||||
self.env['bus.bus'].sendone((self._cr.dbname, 'res.partner', self.env.user.partner_id.id), {'info': 'channel_seen', 'id': self.id})
|
||||
self.env['bus.bus'].sendone((self._cr.dbname, 'res.partner', self.env.user.partner_id.id), {'info': 'channel_seen', 'id': self.id, 'last_message_id': last_message_id})
|
||||
return last_message_id
|
||||
|
||||
@api.multi
|
||||
|
||||
@@ -457,9 +457,7 @@ function update_channel_unread_counter (channel, counter) {
|
||||
}
|
||||
|
||||
var channel_seen = _.throttle(function (channel) {
|
||||
return ChannelModel.call('channel_seen', [[channel.id]]).then(function (last_seen_message_id) {
|
||||
channel.last_seen_message_id = last_seen_message_id;
|
||||
});
|
||||
return ChannelModel.call('channel_seen', [[channel.id]]);
|
||||
}, 3000);
|
||||
|
||||
// Notification handlers
|
||||
@@ -609,8 +607,11 @@ function on_mark_as_unread_notification (data) {
|
||||
|
||||
function on_channel_seen_notification (data) {
|
||||
var channel = chat_manager.get_channel(data.id);
|
||||
if (channel && channel.unread_counter) {
|
||||
update_channel_unread_counter(channel, 0);
|
||||
if (channel) {
|
||||
channel.last_seen_message_id = data.last_message_id;
|
||||
if (channel.unread_counter) {
|
||||
update_channel_unread_counter(channel, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user