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/discuss/discuss.js | 18 ++++++++++++++++++ .../src/components/visitor_banner/visitor_banner.js | 2 ++ 2 files changed, 20 insertions(+) (limited to 'addons/website_livechat') diff --git a/addons/website_livechat/static/src/components/discuss/discuss.js b/addons/website_livechat/static/src/components/discuss/discuss.js index 18b41cea432..778b1513730 100644 --- a/addons/website_livechat/static/src/components/discuss/discuss.js +++ b/addons/website_livechat/static/src/components/discuss/discuss.js @@ -6,6 +6,24 @@ const components = { VisitorBanner: require('website_livechat/static/src/components/visitor_banner/visitor_banner.js'), }; +components.Discuss.patch('website_livechat/static/src/components/discuss/discuss.js', T => + class extends T { + + /** + * @override + */ + _useStoreSelector(props) { + const res = super._useStoreSelector(...arguments); + const thread = res.thread; + const visitor = thread && thread.visitor; + return Object.assign({}, res, { + visitor, + }); + } + + } +); + Object.assign(components.Discuss.components, { VisitorBanner: components.VisitorBanner, }); diff --git a/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js b/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js index 0b39134dcfc..4d0b95a82d0 100644 --- a/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js +++ b/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js @@ -14,7 +14,9 @@ class VisitorBanner extends Component { super(...args); useStore(props => { const visitor = this.env.models['website_livechat.visitor'].get(props.visitorLocalId); + const country = visitor && visitor.country; return { + country: country && country.__state, visitor: visitor ? visitor.__state : undefined, }; }); -- cgit v1.2.3