diff --git a/addons/im_livechat/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js b/addons/im_livechat/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js index 660af89a29f..4d882e929c8 100644 --- a/addons/im_livechat/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js +++ b/addons/im_livechat/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js @@ -13,7 +13,6 @@ patchRecordMethods('DiscussSidebarCategoryItem', { if (this.channel.correspondent && this.channel.correspondent.id > 0) { return this.channel.correspondent.avatarUrl; } - return '/mail/static/src/img/smiley/avatar.jpg'; } return this._super(); }, diff --git a/addons/mail/i18n/mail.pot b/addons/mail/i18n/mail.pot index 1474d532204..3145a900792 100644 --- a/addons/mail/i18n/mail.pot +++ b/addons/mail/i18n/mail.pot @@ -404,6 +404,11 @@ msgstr "" msgid "Recommended Activities" msgstr "" +#. module: mail +#: code:addons/mail/models/mail_channel.py:0 +msgid "A channel of type 'chat' cannot have more than two users." +msgstr "" + #. module: mail #: model:ir.model.fields,help:mail.field_mail_alias__alias_defaults #: model:ir.model.fields,help:mail.field_mail_channel__alias_defaults diff --git a/addons/mail/models/mail_channel.py b/addons/mail/models/mail_channel.py index 7706f88d367..41fdd0f1535 100644 --- a/addons/mail/models/mail_channel.py +++ b/addons/mail/models/mail_channel.py @@ -95,6 +95,14 @@ class Channel(models.Model): ('uuid_unique', 'UNIQUE(uuid)', 'The channel UUID must be unique'), ] + # CHAT CONSTRAINT + + @api.constrains('channel_last_seen_partner_ids', 'channel_partner_ids') + def _constraint_partners_chat(self): + for ch in self.filtered(lambda ch: ch.channel_type == 'chat'): + if len(ch.channel_last_seen_partner_ids) > 2 or len(ch.channel_partner_ids) > 2: + raise ValidationError(_("A channel of type 'chat' cannot have more than two users.")) + # COMPUTE / INVERSE @api.depends('channel_type') diff --git a/addons/mail/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js b/addons/mail/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js index e2161739c96..f064f98be0f 100644 --- a/addons/mail/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js +++ b/addons/mail/static/src/models/discuss_sidebar_category_item/discuss_sidebar_category_item.js @@ -2,7 +2,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many2one, one2one } from '@mail/model/model_field'; -import { clear, link } from '@mail/model/model_field_command'; +import { clear } from '@mail/model/model_field_command'; import Dialog from 'web.Dialog'; @@ -28,8 +28,11 @@ registerModel({ case 'group': return `/web/image/mail.channel/${this.channel.id}/avatar_128?unique=${this.channel.avatarCacheKey}`; case 'chat': - return this.channel.correspondent.avatarUrl; + if (this.channel.correspondent) { + return this.channel.correspondent.avatarUrl; + } } + return '/mail/static/src/img/smiley/avatar.jpg'; }, /** * @private diff --git a/addons/mail/tests/test_mail_channel.py b/addons/mail/tests/test_mail_channel.py index 794d2bd5689..d45fd66ea90 100644 --- a/addons/mail/tests/test_mail_channel.py +++ b/addons/mail/tests/test_mail_channel.py @@ -378,7 +378,7 @@ class TestChannelInternals(MailCommon): self.test_channel.with_context(self._test_context).write({ 'channel_partner_ids': [Command.link(self.user_employee.partner_id.id), Command.link(test_partner.id)], }) - test_chat = self.env['mail.channel'].with_context(self._test_context).create({ + test_chat = self.env['mail.channel'].with_user(self.user_employee).with_context(self._test_context).create({ 'name': 'test', 'channel_type': 'chat', 'public': 'private', diff --git a/addons/mail/views/mail_channel_views.xml b/addons/mail/views/mail_channel_views.xml index 9387cb7a744..9797c440da2 100644 --- a/addons/mail/views/mail_channel_views.xml +++ b/addons/mail/views/mail_channel_views.xml @@ -80,7 +80,8 @@ - + +