From 74b30cb4804d9e6d03fc0b12fcd620060ea4d982 Mon Sep 17 00:00:00 2001 From: "Didier (did)" Date: Mon, 24 Oct 2022 12:14:17 +0000 Subject: [PATCH] [IMP] mail: remove moment from the convert data and compute it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes odoo/odoo#103935 Signed-off-by: Alexandre Kühn (aku) --- .../channel_preview_view.xml | 2 +- .../thread_needaction_preview.xml | 2 +- addons/mail/static/src/models/message.js | 27 +++++++++++++------ addons/mail/static/src/models/message_view.js | 4 +-- .../static/src/models/notification_group.js | 4 +-- addons/mail/static/src/models/thread_view.js | 2 +- 6 files changed, 26 insertions(+), 15 deletions(-) diff --git a/addons/mail/static/src/components/channel_preview_view/channel_preview_view.xml b/addons/mail/static/src/components/channel_preview_view/channel_preview_view.xml index 1c898ca68e7..d3d6eae3e71 100644 --- a/addons/mail/static/src/components/channel_preview_view/channel_preview_view.xml +++ b/addons/mail/static/src/components/channel_preview_view/channel_preview_view.xml @@ -46,7 +46,7 @@ - + diff --git a/addons/mail/static/src/components/thread_needaction_preview/thread_needaction_preview.xml b/addons/mail/static/src/components/thread_needaction_preview/thread_needaction_preview.xml index 5cfab1dc3ad..db46b9a4c32 100644 --- a/addons/mail/static/src/components/thread_needaction_preview/thread_needaction_preview.xml +++ b/addons/mail/static/src/components/thread_needaction_preview/thread_needaction_preview.xml @@ -42,7 +42,7 @@ - + diff --git a/addons/mail/static/src/models/message.js b/addons/mail/static/src/models/message.js index e8fcfed8427..44b4c1f1534 100644 --- a/addons/mail/static/src/models/message.js +++ b/addons/mail/static/src/models/message.js @@ -28,7 +28,7 @@ registerModel({ data2.body = data.body; } if ('date' in data && data.date) { - data2.date = moment(str_to_datetime(data.date)); + data2.date = data.date; } if ('email_from' in data) { data2.email_from = data.email_from; @@ -345,10 +345,21 @@ registerModel({ return !this.messaging.isCurrentUserGuest && !this.isTemporary && !this.isTransient; }, }), + date: attr(), /** * Determines the date of the message as a moment object. */ - date: attr(), + momentDate: attr({ + compute() { + if (!this.date) { + return clear(); + } + if (!moment.isMoment(this.date)) { + return moment(str_to_datetime(this.date)); + } + return this.date; + } + }), /** * States the date of this message as a string (either a relative period * in the near past or an actual date for older dates). @@ -360,7 +371,7 @@ registerModel({ // mainly done to avoid flicker inside the UI. return this.env._t("Today"); } - const date = this.date.format('YYYY-MM-DD'); + const date = this.momentDate.format('YYYY-MM-DD'); if (date === moment().format('YYYY-MM-DD')) { return this.env._t("Today"); } else if ( @@ -370,7 +381,7 @@ registerModel({ ) { return this.env._t("Yesterday"); } - return this.date.format('LL'); + return this.momentDate.format('LL'); }, }), /** @@ -378,10 +389,10 @@ registerModel({ */ datetime: attr({ compute() { - if (!this.date) { + if (!this.momentDate) { return clear(); } - return this.date.format(getLangDatetimeFormat()); + return this.momentDate.format(getLangDatetimeFormat()); }, }), email_from: attr(), @@ -705,10 +716,10 @@ registerModel({ recipients: many('Partner'), shortTime: attr({ compute() { - if (!this.date) { + if (!this.momentDate) { return clear(); } - return this.date.format('hh:mm'); + return this.momentDate.format('hh:mm'); }, }), subject: attr(), diff --git a/addons/mail/static/src/models/message_view.js b/addons/mail/static/src/models/message_view.js index 48ff202bd98..736c5c4d613 100644 --- a/addons/mail/static/src/models/message_view.js +++ b/addons/mail/static/src/models/message_view.js @@ -380,10 +380,10 @@ registerModel({ return clear(); } const now = moment(this.clockWatcher.clock.date.getTime()); - if (now.diff(this.message.date, 'seconds') < 45) { + if (now.diff(this.message.momentDate, 'seconds') < 45) { return this.env._t("now"); } - return this.message.date.fromNow(); + return this.message.momentDate.fromNow(); }, }), /** diff --git a/addons/mail/static/src/models/notification_group.js b/addons/mail/static/src/models/notification_group.js index fb189b86c6a..fe936f1de38 100644 --- a/addons/mail/static/src/models/notification_group.js +++ b/addons/mail/static/src/models/notification_group.js @@ -72,8 +72,8 @@ registerModel({ */ compute() { const dates = this.notifications - .filter(notification => notification.message && notification.message.date) - .map(notification => notification.message.date); + .filter(notification => notification.message && notification.message.momentDate) + .map(notification => notification.message.momentDate); if (dates.length === 0) { return clear(); } diff --git a/addons/mail/static/src/models/thread_view.js b/addons/mail/static/src/models/thread_view.js index 4ca001f0257..ad623a5ed40 100644 --- a/addons/mail/static/src/models/thread_view.js +++ b/addons/mail/static/src/models/thread_view.js @@ -169,7 +169,7 @@ registerModel({ if (!prevMessage.date && message.date) { return false; } - if (message.date && prevMessage.date && Math.abs(message.date.diff(prevMessage.date)) > 60000) { + if (message.momentDate && prevMessage.momentDate && Math.abs(message.momentDate.diff(prevMessage.momentDate)) > 60000) { // more than 1 min. elasped return false; }