[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
This commit is contained in:
Pierre-Yves Dufays
2022-11-02 10:40:05 +01:00
parent ab358543c4
commit d25e930e8b
+12
View File
@@ -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