From f035b8c50e0ccb1380fc1a25fdf99547cf1ab2b7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 Feb 2016 18:09:24 +0000 Subject: [PATCH] Rate limit UI updates to avoid browser death --- src/components/structures/RightPanel.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index c12f53f4c7..105676704c 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -20,6 +20,7 @@ var React = require('react'); var sdk = require('matrix-react-sdk') var dis = require('matrix-react-sdk/lib/dispatcher'); var MatrixClientPeg = require("matrix-react-sdk/lib/MatrixClientPeg"); +var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc'); module.exports = React.createClass({ displayName: 'RightPanel', @@ -66,15 +67,19 @@ module.exports = React.createClass({ onRoomStateMember: function(ev, state, member) { // redraw the badge on the membership list if (this.state.phase == this.Phase.MemberList && member.roomId === this.props.roomId) { - this.forceUpdate(); + this._delayedUpdate(); } else if (this.state.phase === this.Phase.MemberInfo && member.roomId === this.props.roomId && member.userId === this.state.member.userId) { // refresh the member info (e.g. new power level) - this.forceUpdate(); + this._delayedUpdate(); } }, + _delayedUpdate: new rate_limited_func(function() { + this.forceUpdate() + }, 500), + onAction: function(payload) { if (payload.action === "view_user") { if (payload.member) {