Merge pull request #3958 from vector-im/rav/roomdirectory_unmounting
Fix some setState-after-unmount in roomdirectory
This commit is contained in:
commit
b886215fdd
1 changed files with 16 additions and 0 deletions
|
@ -60,6 +60,7 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
|
this._unmounted = false;
|
||||||
this.nextBatch = null;
|
this.nextBatch = null;
|
||||||
this.filterTimeout = null;
|
this.filterTimeout = null;
|
||||||
this.scrollPanel = null;
|
this.scrollPanel = null;
|
||||||
|
@ -97,6 +98,10 @@ module.exports = React.createClass({
|
||||||
// sideOpacity: 1.0,
|
// sideOpacity: 1.0,
|
||||||
// middleOpacity: 1.0,
|
// middleOpacity: 1.0,
|
||||||
// });
|
// });
|
||||||
|
if (this.filterTimeout) {
|
||||||
|
clearTimeout(this.filterTimeout);
|
||||||
|
}
|
||||||
|
this._unmounted = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
refreshRoomList: function() {
|
refreshRoomList: function() {
|
||||||
|
@ -139,6 +144,11 @@ module.exports = React.createClass({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this._unmounted) {
|
||||||
|
// if we've been unmounted, we don't care either.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.nextBatch = data.next_batch;
|
this.nextBatch = data.next_batch;
|
||||||
this.setState((s) => {
|
this.setState((s) => {
|
||||||
s.publicRooms.push(...data.chunk);
|
s.publicRooms.push(...data.chunk);
|
||||||
|
@ -156,6 +166,12 @@ module.exports = React.createClass({
|
||||||
// requests either
|
// requests either
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this._unmounted) {
|
||||||
|
// if we've been unmounted, we don't care either.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.setState({ loading: false });
|
this.setState({ loading: false });
|
||||||
console.error("Failed to get publicRooms: %s", JSON.stringify(err));
|
console.error("Failed to get publicRooms: %s", JSON.stringify(err));
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
||||||
|
|
Loading…
Reference in a new issue