From d25e930e8b7625f965e756cb66f78bddf7f4abf7 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Dufays Date: Thu, 27 Oct 2022 06:39:04 +0000 Subject: [PATCH] [FIX] mail: remove deleted message in discuss front-end When a record was deleted, the related messages were remaining in discuss front-end causing an error when the user was clicking on them. This solves the problem by removing messages in the front-end as soon as they are deleted. Task-2960281 Part-of: odoo/odoo#99371 --- addons/mail/models/mail_message.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py index c6f17d6802a..4cd555a994b 100644 --- a/addons/mail/models/mail_message.py +++ b/addons/mail/models/mail_message.py @@ -659,9 +659,21 @@ class Message(models.Model): self.mapped('attachment_ids').filtered( lambda attach: attach.res_model == self._name and (attach.res_id in self.ids or attach.res_id == 0) ).unlink() + messages_by_partner = defaultdict(lambda: self.env['mail.message']) + partners_with_user = self.partner_ids.filtered('user_ids') for elem in self: + for partner in elem.partner_ids & partners_with_user: + messages_by_partner[partner] |= elem if elem.is_thread_message(): elem._invalidate_documents() + + # Notify front-end of messages deletion for partners having a user + if messages_by_partner: + self.env['bus.bus']._sendmany([ + (partner, 'mail.message/delete', {'message_ids': messages.ids}) + for partner, messages in messages_by_partner.items() + ]) + return super(Message, self).unlink() @api.model