summaryrefslogtreecommitdiff
path: root/addons/im_livechat/static/src/models
diff options
context:
space:
mode:
Diffstat (limited to 'addons/im_livechat/static/src/models')
-rw-r--r--addons/im_livechat/static/src/models/partner/partner.js23
-rw-r--r--addons/im_livechat/static/src/models/thread/thread.js12
2 files changed, 35 insertions, 0 deletions
diff --git a/addons/im_livechat/static/src/models/partner/partner.js b/addons/im_livechat/static/src/models/partner/partner.js
new file mode 100644
index 00000000000..7392c8d6229
--- /dev/null
+++ b/addons/im_livechat/static/src/models/partner/partner.js
@@ -0,0 +1,23 @@
+odoo.define('im_livechat/static/src/models/partner/partner.js', function (require) {
+'use strict';
+
+const {
+ registerClassPatchModel,
+} = require('mail/static/src/model/model_core.js');
+
+let nextPublicId = -1;
+
+registerClassPatchModel('mail.partner', 'im_livechat/static/src/models/partner/partner.js', {
+
+ //----------------------------------------------------------------------
+ // Public
+ //----------------------------------------------------------------------
+
+ getNextPublicId() {
+ const id = nextPublicId;
+ nextPublicId -= 1;
+ return id;
+ },
+});
+
+});
diff --git a/addons/im_livechat/static/src/models/thread/thread.js b/addons/im_livechat/static/src/models/thread/thread.js
index 190a2088066..1ec06246ec7 100644
--- a/addons/im_livechat/static/src/models/thread/thread.js
+++ b/addons/im_livechat/static/src/models/thread/thread.js
@@ -53,9 +53,11 @@ registerClassPatchModel('mail.thread', 'im_livechat/static/src/models/thread/thr
)
);
data2.members.push(['link', partner]);
+ data2.correspondent = [['link', partner]];
} else {
const partnerData = this.env.models['mail.partner'].convertData(data.livechat_visitor);
data2.members.push(['insert', partnerData]);
+ data2.correspondent = [['insert', partnerData]];
}
}
return data2;
@@ -71,6 +73,16 @@ registerInstancePatchModel('mail.thread', 'im_livechat/static/src/models/thread/
/**
* @override
*/
+ _computeCorrespondent() {
+ if (this.channel_type === 'livechat') {
+ // livechat correspondent never change: always the public member.
+ return [];
+ }
+ return this._super();
+ },
+ /**
+ * @override
+ */
_computeDisplayName() {
if (this.channel_type === 'livechat' && this.correspondent) {
if (this.correspondent.country) {