summaryrefslogtreecommitdiff
path: root/addons/website_livechat
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2021-01-21 17:43:49 +0000
committerSébastien Theys <seb@odoo.com>2021-01-21 17:43:49 +0000
commit7f9af5747c7b650b6cf4ab894bdd0b113e77a78b (patch)
tree5152dca1d14355e7c7465b41fcbe9c80770e98a6 /addons/website_livechat
parent47bfdf0592a5dd93870ca1a9da326351d70087bb (diff)
[FIX] mail, *: significantly reduce number of useless renders
* = 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) <aku@odoo.com>
Diffstat (limited to 'addons/website_livechat')
-rw-r--r--addons/website_livechat/static/src/components/discuss/discuss.js18
-rw-r--r--addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js2
2 files changed, 20 insertions, 0 deletions
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,
};
});