Fix bug where vector freezes on power level event

Make rate_limited_function accept functions with args so we can just ratelimit the event handler & be done with it.

Fixes https://github.com/vector-im/vector-web/issues/1877
This commit is contained in:
David Baker 2016-07-26 17:58:19 +01:00
parent 4b763997df
commit 4ecf5f6372
2 changed files with 6 additions and 4 deletions

View file

@ -482,7 +482,9 @@ module.exports = React.createClass({
}
},
onRoomStateMember: function(ev, state, member) {
// rate limited because a power level change will emit an event for every
// member in the room.
onRoomStateMember: new rate_limited_func(function(ev, state, member) {
// ignore if we don't have a room yet
if (!this.state.room) {
return;
@ -511,7 +513,7 @@ module.exports = React.createClass({
member.userId === this.props.ConferenceHandler.getConferenceUserIdForRoom(member.roomId)) {
this._updateConfCallNotification();
}
},
}, 500),
_hasUnsentMessages: function(room) {
return this._getUnsentMessages(room).length > 0;

View file

@ -23,13 +23,13 @@ module.exports = function(f, minIntervalMs) {
var now = Date.now();
if (self.lastCall < now - minIntervalMs) {
f.apply(this);
f.apply(this, arguments);
self.lastCall = now;
} else if (self.scheduledCall === undefined) {
self.scheduledCall = setTimeout(
() => {
self.scheduledCall = undefined;
f.apply(this);
f.apply(this, arguments);
self.lastCall = now;
},
(self.lastCall + minIntervalMs) - now