diff --git a/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js b/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js index 5c3a0787ec1..55ea1edca3e 100644 --- a/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js +++ b/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js @@ -1,6 +1,7 @@ /** @odoo-module **/ -import { useUpdate } from '@mail/component_hooks/use_update'; +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerMessagingComponent } from '@mail/utils/messaging_component'; const { Component } = owl; @@ -12,7 +13,8 @@ export class ComposerSuggestionView extends Component { */ setup() { super.setup(); - useUpdate({ func: () => this._update() }); + useComponentToModel({ fieldName: 'component' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); } //-------------------------------------------------------------------------- @@ -26,26 +28,6 @@ export class ComposerSuggestionView extends Component { return this.props.record; } - //-------------------------------------------------------------------------- - // Private - //-------------------------------------------------------------------------- - - /** - * @private - */ - _update() { - if ( - this.root.el && - this.composerSuggestionView.composerSuggestionListViewOwner.hasToScrollToActiveSuggestionView && - this.composerSuggestionView.composerSuggestionListViewOwnerAsActiveSuggestionView - ) { - this.root.el.scrollIntoView({ - block: 'center', - }); - this.composerSuggestionView.composerSuggestionListViewOwner.update({ hasToScrollToActiveSuggestionView: false }); - } - } - } Object.assign(ComposerSuggestionView, { diff --git a/addons/mail/static/src/models/composer_suggestion_view.js b/addons/mail/static/src/models/composer_suggestion_view.js index e7d28c7ca8b..26f1f872f68 100644 --- a/addons/mail/static/src/models/composer_suggestion_view.js +++ b/addons/mail/static/src/models/composer_suggestion_view.js @@ -26,8 +26,19 @@ registerModel({ composerViewOwner.closeSuggestions(); composerViewOwner.update({ doFocus: true }); }, + onComponentUpdate() { + if ( + this.component.root.el && + this.composerSuggestionListViewOwner.hasToScrollToActiveSuggestionView && + this.composerSuggestionListViewOwnerAsActiveSuggestionView + ) { + this.component.root.el.scrollIntoView({ block: 'center' }); + this.composerSuggestionListViewOwner.update({ hasToScrollToActiveSuggestionView: false }); + } + }, }, fields: { + component: attr(), composerSuggestionListViewOwner: one('ComposerSuggestionListView', { compute() { if (this.composerSuggestionListViewExtraComposerSuggestionViewItemOwner) {