Don't spam the same RR at the server until it acks it.
This commit is contained in:
parent
fee7ee5dcc
commit
0052fbd6cb
1 changed files with 10 additions and 2 deletions
|
@ -85,6 +85,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
|
this.last_rr_sent_event_id = undefined;
|
||||||
this.dispatcherRef = dis.register(this.onAction);
|
this.dispatcherRef = dis.register(this.onAction);
|
||||||
MatrixClientPeg.get().on("Room.timeline", this.onRoomTimeline);
|
MatrixClientPeg.get().on("Room.timeline", this.onRoomTimeline);
|
||||||
MatrixClientPeg.get().on("Room.name", this.onRoomName);
|
MatrixClientPeg.get().on("Room.name", this.onRoomName);
|
||||||
|
@ -1107,8 +1108,15 @@ module.exports = React.createClass({
|
||||||
var lastReadEventIndex = this._getLastDisplayedEventIndexIgnoringOwn();
|
var lastReadEventIndex = this._getLastDisplayedEventIndexIgnoringOwn();
|
||||||
if (lastReadEventIndex === null) return;
|
if (lastReadEventIndex === null) return;
|
||||||
|
|
||||||
if (lastReadEventIndex > currentReadUpToEventIndex) {
|
var lastReadEvent = this.state.room.timeline[lastReadEventIndex];
|
||||||
MatrixClientPeg.get().sendReadReceipt(this.state.room.timeline[lastReadEventIndex]);
|
|
||||||
|
// we also remember the last read receipt we sent to avoid spamming the same one at the server repeatedly
|
||||||
|
if (lastReadEventIndex > currentReadUpToEventIndex && this.last_rr_sent_event_id != lastReadEvent.getId()) {
|
||||||
|
this.last_rr_sent_event_id = lastReadEvent.getId();
|
||||||
|
MatrixClientPeg.get().sendReadReceipt(lastReadEvent).catch(() => {
|
||||||
|
// it failed, so allow retries next time the user is active
|
||||||
|
this.last_rr_sent_event_id = undefined;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue