prevent unwarranted RoomView re-render

This commit is contained in:
Germain Souquet 2021-05-19 14:32:49 +01:00
parent 8f945ce846
commit cf8e49729a
2 changed files with 14 additions and 26 deletions

View file

@ -83,6 +83,7 @@ import { objectHasDiff } from "../../utils/objects";
import SpaceRoomView from "./SpaceRoomView";
import { IOpts } from "../../createRoom";
import {replaceableComponent} from "../../utils/replaceableComponent";
import _ from 'lodash';
const DEBUG = false;
let debuglog = function(msg: string) {};
@ -175,6 +176,7 @@ export interface IState {
statusBarVisible: boolean;
// We load this later by asking the js-sdk to suggest a version for us.
// This object is the result of Room#getRecommendedVersion()
upgradeRecommendation?: {
version: string;
needsUpgrade: boolean;
@ -528,7 +530,18 @@ export default class RoomView extends React.Component<IProps, IState> {
}
shouldComponentUpdate(nextProps, nextState) {
return (objectHasDiff(this.props, nextProps) || objectHasDiff(this.state, nextState));
const hasPropsDiff = objectHasDiff(this.props, nextProps);
const newUpgradeRecommendation = nextState.upgradeRecommendation || {}
const state = _.omit(this.state, ['upgradeRecommendation']);
const newState = _.omit(nextState, ['upgradeRecommendation'])
const hasStateDiff =
objectHasDiff(state, newState) ||
(newUpgradeRecommendation && newUpgradeRecommendation.needsUpgrade === true)
return hasPropsDiff || hasStateDiff;
}
componentDidUpdate() {