From 4ca549253be2c099294f05d8ba57384e1b7bc0d6 Mon Sep 17 00:00:00 2001 From: Xavier Dubuc Date: Thu, 11 Jun 2020 15:19:26 +0000 Subject: [PATCH] [FIX] mail: mark message as seen only when thread composer is focused MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit task-2272510 closes odoo/odoo#53088 X-original-commit: edf356c2022b3039e53e82a092fc64533f59df27 Signed-off-by: Alexandre Kühn (aku) --- .../src/components/composer/composer.js | 24 ----- .../composer_text_input.js | 14 +++ .../composer_text_input.xml | 2 +- .../static/src/components/discuss/discuss.xml | 1 - .../src/components/discuss/discuss_tests.js | 85 +++++++++-------- .../components/message_list/message_list.js | 26 ++--- .../thread_viewer/thread_viewer.xml | 1 - .../thread_viewer/thread_viewer_tests.js | 95 ++++++++++++++++--- .../static/src/models/composer/composer.js | 3 + .../mail/static/src/models/thread/thread.js | 18 +++- .../src/models/thread_viewer/thread_viewer.js | 56 ++++++++++- 11 files changed, 228 insertions(+), 97 deletions(-) diff --git a/addons/mail/static/src/components/composer/composer.js b/addons/mail/static/src/components/composer/composer.js index f2135835a4d..63d85a0fb95 100644 --- a/addons/mail/static/src/components/composer/composer.js +++ b/addons/mail/static/src/components/composer/composer.js @@ -48,35 +48,13 @@ class Composer extends Component { * Reference of the text input component. */ this._textInputRef = useRef('textInput'); - /** - * Tracked focus counter from props. Useful to determine whether it - * should auto focus this composer when patched. - */ - this._focusCount = 0; - // to focus if the prop changes - this._lastComposer = undefined; this._onClickCaptureGlobal = this._onClickCaptureGlobal.bind(this); } mounted() { - this._lastComposer = this.composer; - if (this.props.isFocusOnMount) { - this.focus(); - } document.addEventListener('click', this._onClickCaptureGlobal, true); } - patched() { - // focus when changing composer - if ( - this.props.isFocusOnMount && - this._lastComposer !== this.composer - ) { - this.focus(); - } - this._lastComposer = this.composer; - } - willUnmount() { document.removeEventListener('click', this._onClickCaptureGlobal, true); } @@ -338,7 +316,6 @@ Object.assign(Composer, { isCompact: true, isDiscardOnClickAway: false, isExpandable: false, - isFocusOnMount: false, isLog: false, }, props: { @@ -382,7 +359,6 @@ Object.assign(Composer, { isCompact: Boolean, isDiscardOnClickAway: Boolean, isExpandable: Boolean, - isFocusOnMount: Boolean, isLog: Boolean, }, template: 'mail.Composer', diff --git a/addons/mail/static/src/components/composer_text_input/composer_text_input.js b/addons/mail/static/src/components/composer_text_input/composer_text_input.js index 198f563d1c7..1be0e77a98b 100644 --- a/addons/mail/static/src/components/composer_text_input/composer_text_input.js +++ b/addons/mail/static/src/components/composer_text_input/composer_text_input.js @@ -158,6 +158,20 @@ class ComposerTextInput extends Component { // Handlers //-------------------------------------------------------------------------- + /** + * @private + */ + _onFocusinTextarea() { + this.composer.update({ hasFocus: true }); + } + + /** + * @private + */ + _onFocusoutTextarea() { + this.composer.update({ hasFocus: false }); + } + /** * @private */ diff --git a/addons/mail/static/src/components/composer_text_input/composer_text_input.xml b/addons/mail/static/src/components/composer_text_input/composer_text_input.xml index f68b295cb8d..949f1065a56 100644 --- a/addons/mail/static/src/components/composer_text_input/composer_text_input.xml +++ b/addons/mail/static/src/components/composer_text_input/composer_text_input.xml @@ -36,7 +36,7 @@ -