summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/models
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/static/src/models')
-rw-r--r--addons/mail/static/src/models/messaging/messaging.js14
-rw-r--r--addons/mail/static/src/models/messaging_initializer/messaging_initializer.js14
2 files changed, 26 insertions, 2 deletions
diff --git a/addons/mail/static/src/models/messaging/messaging.js b/addons/mail/static/src/models/messaging/messaging.js
index a7f7fcf0b6a..6594f8db48c 100644
--- a/addons/mail/static/src/models/messaging/messaging.js
+++ b/addons/mail/static/src/models/messaging/messaging.js
@@ -2,7 +2,7 @@ odoo.define('mail/static/src/models/messaging/messaging.js', function (require)
'use strict';
const { registerNewModel } = require('mail/static/src/model/model_core.js');
-const { attr, many2one, one2many, one2one } = require('mail/static/src/model/model_field.js');
+const { attr, many2many, many2one, one2many, one2one } = require('mail/static/src/model/model_field.js');
function factory(dependencies) {
@@ -222,8 +222,20 @@ function factory(dependencies) {
default: 0,
}),
partnerRoot: many2one('mail.partner'),
+ /**
+ * Determines which partner should be considered the public partner,
+ * which is a special partner notably used in livechat.
+ *
+ * @deprecated in favor of `publicPartners` because in multi-website
+ * setup there might be a different public partner per website.
+ */
publicPartner: many2one('mail.partner'),
/**
+ * Determines which partners should be considered the public partners,
+ * which are special partners notably used in livechat.
+ */
+ publicPartners: many2many('mail.partner'),
+ /**
* Mailbox Starred.
*/
starred: one2one('mail.thread'),
diff --git a/addons/mail/static/src/models/messaging_initializer/messaging_initializer.js b/addons/mail/static/src/models/messaging_initializer/messaging_initializer.js
index 07d44355931..a0c8372940d 100644
--- a/addons/mail/static/src/models/messaging_initializer/messaging_initializer.js
+++ b/addons/mail/static/src/models/messaging_initializer/messaging_initializer.js
@@ -80,6 +80,7 @@ function factory(dependencies) {
* @param {integer} [param0.needaction_inbox_counter=0]
* @param {Object} param0.partner_root
* @param {Object} param0.public_partner
+ * @param {Object[]} param0.public_partners
* @param {Object[]} [param0.shortcodes=[]]
* @param {integer} [param0.starred_counter=0]
*/
@@ -96,6 +97,7 @@ function factory(dependencies) {
needaction_inbox_counter = 0,
partner_root,
public_partner,
+ public_partners,
shortcodes = [],
starred_counter = 0
}) {
@@ -107,6 +109,7 @@ function factory(dependencies) {
moderation_channel_ids,
partner_root,
public_partner,
+ public_partners,
});
// mailboxes after partners and before other initializers that might
// manipulate threads or messages
@@ -246,6 +249,7 @@ function factory(dependencies) {
* @param {integer[]} moderation_channel_ids
* @param {Object} partner_root
* @param {Object} public_partner
+ * @param {Object[]} [public_partners=[]]
*/
_initPartners({
current_partner,
@@ -253,7 +257,9 @@ function factory(dependencies) {
moderation_channel_ids = [],
partner_root,
public_partner,
+ public_partners = [],
}) {
+ const publicPartner = this.env.models['mail.partner'].convertData(public_partner);
this.messaging.update({
currentPartner: [['insert', Object.assign(
this.env.models['mail.partner'].convertData(current_partner),
@@ -271,7 +277,13 @@ function factory(dependencies) {
)]],
currentUser: [['insert', { id: currentUserId }]],
partnerRoot: [['insert', this.env.models['mail.partner'].convertData(partner_root)]],
- publicPartner: [['insert', this.env.models['mail.partner'].convertData(public_partner)]],
+ publicPartner: [['insert', publicPartner]],
+ publicPartners: [
+ ['insert', publicPartner],
+ ['insert', public_partners.map(
+ publicPartner => this.env.models['mail.partner'].convertData(publicPartner))
+ ],
+ ],
});
}