From 0b1ff86f24ee9f021e1b6c3f8eda76e66b088922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Fri, 2 Oct 2020 14:27:38 +0000 Subject: [PATCH] [FIX] mail, im_livechat: consider all init channels as pinned MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit task-2347732 closes odoo/odoo#59028 X-original-commit: f1ac4bb61d1bc02c4b69dc31a2869fbd15852514 Signed-off-by: Alexandre Kühn (aku) Signed-off-by: Sébastien Theys (seb) --- .../models/messaging_initializer/messaging_initializer.js | 7 ++++++- .../models/messaging_initializer/messaging_initializer.js | 7 ++++++- addons/mail/static/src/models/thread/thread.js | 7 ------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/addons/im_livechat/static/src/models/messaging_initializer/messaging_initializer.js b/addons/im_livechat/static/src/models/messaging_initializer/messaging_initializer.js index 4780cf041a4..6a98302e668 100644 --- a/addons/im_livechat/static/src/models/messaging_initializer/messaging_initializer.js +++ b/addons/im_livechat/static/src/models/messaging_initializer/messaging_initializer.js @@ -20,9 +20,14 @@ registerInstancePatchModel('mail.messaging_initializer', 'im_livechat/static/src // there might be a lot of channels, insert each of them one by // one asynchronously to avoid blocking the UI await this.async(() => new Promise(resolve => setTimeout(resolve))); - this.env.models['mail.thread'].insert( + const channel = this.env.models['mail.thread'].insert( this.env.models['mail.thread'].convertData(data), ); + // flux specific: channels received at init have to be + // considered pinned. task-2284357 + if (!channel.isPinned) { + channel.update({ isPendingPinned: true }); + } } }, }); 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 b258e5502a3..6272baf9c84 100644 --- a/addons/mail/static/src/models/messaging_initializer/messaging_initializer.js +++ b/addons/mail/static/src/models/messaging_initializer/messaging_initializer.js @@ -153,9 +153,14 @@ function factory(dependencies) { // there might be a lot of channels, insert each of them one by // one asynchronously to avoid blocking the UI await this.async(() => new Promise(resolve => setTimeout(resolve))); - this.env.models['mail.thread'].insert( + const channel = this.env.models['mail.thread'].insert( this.env.models['mail.thread'].convertData(channelData) ); + // flux specific: channels received at init have to be + // considered pinned. task-2284357 + if (!channel.isPinned) { + channel.update({ isPendingPinned: true }); + } } } diff --git a/addons/mail/static/src/models/thread/thread.js b/addons/mail/static/src/models/thread/thread.js index 837de254d9d..cfc0672df93 100644 --- a/addons/mail/static/src/models/thread/thread.js +++ b/addons/mail/static/src/models/thread/thread.js @@ -164,13 +164,6 @@ function factory(dependencies) { } if ('is_pinned' in data) { data2.isServerPinned = data.is_pinned; - // FIXME: The following is admittedly odd. - // Fixing it should entail a deeper reflexion on the group_based_subscription - // and is_pinned functionalities, especially in python. - // task-2284357 - if ('group_based_subscription' in data && data.group_based_subscription) { - data2.isServerPinned = true; - } } if ('last_message' in data && data.last_message) { data2.messagesAsServerChannel.push(['insert', { id: data.last_message.id }]);