[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:
Aaron Bohy
2016-01-25 15:46:56 +01:00
parent 6cc8d32d60
commit da2cbae8f8
2 changed files with 7 additions and 6 deletions
+1 -1
View File
@@ -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
+6 -5
View File
@@ -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);
}
}
}