From c6daa388f1a9d225b433ba77dbe86b5af36dac16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20K=C3=BChn?= Date: Mon, 28 Mar 2022 13:39:52 +0000 Subject: [PATCH] [IMP] mail: introduce MessageSeenIndicator/text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-2793280 closes odoo/odoo#87372 Signed-off-by: Sébastien Theys (seb) --- .../message_seen_indicator.js | 68 ------------------ .../message_seen_indicator.xml | 2 +- .../src/models/message_seen_indicator.js | 71 ++++++++++++++++++- 3 files changed, 71 insertions(+), 70 deletions(-) diff --git a/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js b/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js index 78ccd282c71..d90c486d513 100644 --- a/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js +++ b/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js @@ -10,74 +10,6 @@ export class MessageSeenIndicator extends Component { // Public //-------------------------------------------------------------------------- - /** - * @returns {string} - */ - get indicatorTitle() { - if (!this.messageSeenIndicator) { - return ''; - } - if (this.messageSeenIndicator.hasEveryoneSeen) { - return this.env._t("Seen by Everyone"); - } - if (this.messageSeenIndicator.hasSomeoneSeen) { - const partnersThatHaveSeen = this.messageSeenIndicator.partnersThatHaveSeen.map(partner => { - if (this.message.originThread) { - return this.message.originThread.getMemberName(partner); - } - return partner.nameOrDisplayName; - }); - if (partnersThatHaveSeen.length === 1) { - return _.str.sprintf( - this.env._t("Seen by %s"), - partnersThatHaveSeen[0] - ); - } - if (partnersThatHaveSeen.length === 2) { - return _.str.sprintf( - this.env._t("Seen by %s and %s"), - partnersThatHaveSeen[0], - partnersThatHaveSeen[1] - ); - } - return _.str.sprintf( - this.env._t("Seen by %s, %s and more"), - partnersThatHaveSeen[0], - partnersThatHaveSeen[1] - ); - } - if (this.messageSeenIndicator.hasEveryoneFetched) { - return this.env._t("Received by Everyone"); - } - if (this.messageSeenIndicator.hasSomeoneFetched) { - const partnersThatHaveFetched = this.messageSeenIndicator.partnersThatHaveFetched.map(partner => { - if (this.message.originThread) { - return this.message.originThread.getMemberName(partner); - } - return partner.nameOrDisplayName; - }); - if (partnersThatHaveFetched.length === 1) { - return _.str.sprintf( - this.env._t("Received by %s"), - partnersThatHaveFetched[0] - ); - } - if (partnersThatHaveFetched.length === 2) { - return _.str.sprintf( - this.env._t("Received by %s and %s"), - partnersThatHaveFetched[0], - partnersThatHaveFetched[1] - ); - } - return _.str.sprintf( - this.env._t("Received by %s, %s and more"), - partnersThatHaveFetched[0], - partnersThatHaveFetched[1] - ); - } - return ''; - } - /** * @returns {Message} */ diff --git a/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.xml b/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.xml index 505099654d4..2bbd09530e3 100644 --- a/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.xml +++ b/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.xml @@ -3,7 +3,7 @@ - + diff --git a/addons/mail/static/src/models/message_seen_indicator.js b/addons/mail/static/src/models/message_seen_indicator.js index 5fa99032462..a97b653fe02 100644 --- a/addons/mail/static/src/models/message_seen_indicator.js +++ b/addons/mail/static/src/models/message_seen_indicator.js @@ -2,7 +2,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; -import { replace, unlinkAll } from '@mail/model/model_field_command'; +import { clear, replace, unlinkAll } from '@mail/model/model_field_command'; registerModel({ name: 'MessageSeenIndicator', @@ -165,6 +165,71 @@ registerModel({ } return replace(otherPartnersThatHaveSeen); }, + /** + * @private + * @returns {string|FieldCommand} + */ + _computeText() { + if (this.hasEveryoneSeen) { + return this.env._t("Seen by Everyone"); + } + if (this.hasSomeoneSeen) { + const partnersThatHaveSeen = this.partnersThatHaveSeen.map(partner => { + if (this.message.originThread) { + return this.message.originThread.getMemberName(partner); + } + return partner.nameOrDisplayName; + }); + if (partnersThatHaveSeen.length === 1) { + return _.str.sprintf( + this.env._t("Seen by %s"), + partnersThatHaveSeen[0] + ); + } + if (partnersThatHaveSeen.length === 2) { + return _.str.sprintf( + this.env._t("Seen by %s and %s"), + partnersThatHaveSeen[0], + partnersThatHaveSeen[1] + ); + } + return _.str.sprintf( + this.env._t("Seen by %s, %s and more"), + partnersThatHaveSeen[0], + partnersThatHaveSeen[1] + ); + } + if (this.hasEveryoneFetched) { + return this.env._t("Received by Everyone"); + } + if (this.hasSomeoneFetched) { + const partnersThatHaveFetched = this.partnersThatHaveFetched.map(partner => { + if (this.message.originThread) { + return this.message.originThread.getMemberName(partner); + } + return partner.nameOrDisplayName; + }); + if (partnersThatHaveFetched.length === 1) { + return _.str.sprintf( + this.env._t("Received by %s"), + partnersThatHaveFetched[0] + ); + } + if (partnersThatHaveFetched.length === 2) { + return _.str.sprintf( + this.env._t("Received by %s and %s"), + partnersThatHaveFetched[0], + partnersThatHaveFetched[1] + ); + } + return _.str.sprintf( + this.env._t("Received by %s, %s and more"), + partnersThatHaveFetched[0], + partnersThatHaveFetched[1] + ); + } + return clear(); + }, }, fields: { hasEveryoneFetched: attr({ @@ -201,6 +266,10 @@ registerModel({ partnersThatHaveSeen: many('Partner', { compute: '_computePartnersThatHaveSeen', }), + text: attr({ + compute: '_computeText', + default: '', + }), /** * The thread concerned by this seen indicator. */