From 7f9af5747c7b650b6cf4ab894bdd0b113e77a78b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Theys?= Date: Thu, 21 Jan 2021 17:43:49 +0000 Subject: [FIX] mail, *: significantly reduce number of useless renders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * = hr_holidays, im_livechat, website_livechat A huge amount of components where rendered for no reason, notably when typing a new message (at every key press), which significantly slowed down the interface. There were 2 causes to this number of renders: - OWL rendering all children automatically, even if their props didn't change, unless `shouldUpdate` is overridden, which is now done. - `useStore` selectors being way too generous in what they observed task-2399731 closes odoo/odoo#62703 Signed-off-by: Alexandre Kühn (aku) --- .../static/src/components/notification_request/notification_request.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'addons/mail/static/src/components/notification_request/notification_request.js') diff --git a/addons/mail/static/src/components/notification_request/notification_request.js b/addons/mail/static/src/components/notification_request/notification_request.js index 69fb5beab2f..54dcbbd4b29 100644 --- a/addons/mail/static/src/components/notification_request/notification_request.js +++ b/addons/mail/static/src/components/notification_request/notification_request.js @@ -4,6 +4,7 @@ odoo.define('mail/static/src/components/notification_request/notification_reques const components = { PartnerImStatusIcon: require('mail/static/src/components/partner_im_status_icon/partner_im_status_icon.js'), }; +const useShouldUpdateBasedOnProps = require('mail/static/src/component_hooks/use_should_update_based_on_props/use_should_update_based_on_props.js'); const useStore = require('mail/static/src/component_hooks/use_store/use_store.js'); const { Component } = owl; @@ -15,6 +16,7 @@ class NotificationRequest extends Component { */ constructor(...args) { super(...args); + useShouldUpdateBasedOnProps(); useStore(props => { return { isDeviceMobile: this.env.messaging.device.isMobile, -- cgit v1.2.3