Do the faster length change check first

... because it's faster. Also we don't need to diff the array here.
This commit is contained in:
Travis Ralston 2020-07-23 22:31:52 -06:00
parent fd15fc3984
commit 82f90c4734

View file

@ -47,7 +47,7 @@ import { Direction } from "re-resizable/lib/resizer";
import { polyfillTouchEvent } from "../../../@types/polyfill";
import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore";
import RoomListLayoutStore from "../../../stores/room-list/RoomListLayoutStore";
import { arrayHasDiff, arrayHasOrderChange } from "../../../utils/arrays";
import { arrayHasOrderChange } from "../../../utils/arrays";
import { objectExcluding, objectHasValueChange } from "../../../utils/objects";
const SHOW_N_BUTTON_HEIGHT = 28; // As defined by CSS
@ -202,6 +202,11 @@ export default class RoomSublist extends React.Component<IProps, IState> {
return true;
}
// Quickly double check we're not about to break something due to the number of rooms changing.
if (this.state.rooms.length !== nextState.rooms.length) {
return true;
}
// Finally, determine if the room update (as presumably that's all that's left) is within
// our visible range. If it is, then do a render. If the update is outside our visible range
// then we can skip the update.
@ -215,11 +220,6 @@ export default class RoomSublist extends React.Component<IProps, IState> {
return true;
}
// Quickly double check we're not about to break something due to the number of rooms changing.
if (arrayHasDiff(this.state.rooms, nextState.rooms)) {
return true;
}
// Finally, nothing happened so no-op the update
return false;
}