summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/components/message
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/static/src/components/message')
-rw-r--r--addons/mail/static/src/components/message/message.js27
-rw-r--r--addons/mail/static/src/components/message/message.xml2
2 files changed, 11 insertions, 18 deletions
diff --git a/addons/mail/static/src/components/message/message.js b/addons/mail/static/src/components/message/message.js
index e09f0e4946c..4a89514b39a 100644
--- a/addons/mail/static/src/components/message/message.js
+++ b/addons/mail/static/src/components/message/message.js
@@ -11,7 +11,7 @@ const components = {
PartnerImStatusIcon: require('mail/static/src/components/partner_im_status_icon/partner_im_status_icon.js'),
};
const useStore = require('mail/static/src/component_hooks/use_store/use_store.js');
-const { timeFromNow } = require('mail.utils');
+const useUpdate = require('mail/static/src/component_hooks/use_update/use_update.js');
const { _lt } = require('web.core');
const { getLangDatetimeFormat } = require('web.time');
@@ -41,10 +41,6 @@ class Message extends Component {
* clicked state, it keeps displaying the commands.
*/
isClicked: false,
- /**
- * Time elapsed from message datetime to current datetime.
- */
- timeElapsed: null,
});
useStore(props => {
const message = this.env.models['mail.message'].get(props.messageLocalId);
@@ -78,6 +74,7 @@ class Message extends Component {
notifications: 1,
},
});
+ useUpdate({ func: () => this._update() });
/**
* The intent of the reply button depends on the last rendered state.
*/
@@ -103,14 +100,6 @@ class Message extends Component {
*/
_constructor() {}
- mounted() {
- this._update();
- }
-
- patched() {
- this._update();
- }
-
willUnmount() {
clearInterval(this._intervalId);
}
@@ -393,6 +382,9 @@ class Message extends Component {
* @private
*/
_update() {
+ if (!this.message) {
+ return;
+ }
// Remove all readmore before if any before reinsert them with _insertReadMoreLess.
// This is needed because _insertReadMoreLess is working with direct DOM mutations
// which are not sync with Owl.
@@ -401,14 +393,15 @@ class Message extends Component {
el.remove();
}
this._insertReadMoreLess($(this._contentRef.el));
+ this.env.messagingBus.trigger('o-component-message-read-more-less-inserted', {
+ message: this.message,
+ });
}
this._wasSelected = this.props.isSelected;
- if (!this.state.timeElapsed) {
- this.state.timeElapsed = timeFromNow(this.message.date);
- }
+ this.message.refreshDateFromNow();
clearInterval(this._intervalId);
this._intervalId = setInterval(() => {
- this.state.timeElapsed = timeFromNow(this.message.date);
+ this.message.refreshDateFromNow();
}, 60 * 1000);
}
diff --git a/addons/mail/static/src/components/message/message.xml b/addons/mail/static/src/components/message/message.xml
index 29cb10207d7..300130f6518 100644
--- a/addons/mail/static/src/components/message/message.xml
+++ b/addons/mail/static/src/components/message/message.xml
@@ -74,7 +74,7 @@
</div>
</t>
<div class="o_Message_date o_Message_headerDate" t-att-class="{ 'o-message-selected': props.isSelected }" t-att-title="datetime">
- - <t t-esc="state.timeElapsed"/>
+ - <t t-esc="message.dateFromNow"/>
</div>
<t t-if="message.isCurrentPartnerAuthor and threadView and threadView.thread">
<MessageSeenIndicator class="o_Message_seenIndicator" messageLocalId="message.localId" threadLocalId="threadView.thread.localId"/>