Space panel should watch spaces for space name changes (#7432)

This commit is contained in:
Michael Telatynski 2021-12-21 15:35:54 +00:00 committed by GitHub
parent 70dc03552c
commit 38634f86d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 4 deletions

View file

@ -146,7 +146,7 @@ export const SpaceButton: React.FC<IButtonProps> = ({
};
interface IItemProps extends InputHTMLAttributes<HTMLLIElement> {
space?: Room;
space: Room;
activeSpaces: SpaceKey[];
isNested?: boolean;
isPanelCollapsed?: boolean;
@ -157,6 +157,7 @@ interface IItemProps extends InputHTMLAttributes<HTMLLIElement> {
}
interface IItemState {
name: string;
collapsed: boolean;
childSpaces: Room[];
}
@ -176,15 +177,18 @@ export class SpaceItem extends React.PureComponent<IItemProps, IItemState> {
);
this.state = {
name: this.props.space.name,
collapsed,
childSpaces: this.childSpaces,
};
SpaceStore.instance.on(this.props.space.roomId, this.onSpaceUpdate);
this.props.space.on("Room.name", this.onRoomNameChange);
}
componentWillUnmount() {
SpaceStore.instance.off(this.props.space.roomId, this.onSpaceUpdate);
this.props.space.off("Room.name", this.onRoomNameChange);
}
private onSpaceUpdate = () => {
@ -193,6 +197,12 @@ export class SpaceItem extends React.PureComponent<IItemProps, IItemState> {
});
};
private onRoomNameChange = () => {
this.setState({
name: this.props.space.name,
});
};
private get childSpaces() {
return SpaceStore.instance.getChildSpaces(this.props.space.roomId)
.filter(s => !this.props.parents?.has(s.roomId));
@ -318,7 +328,7 @@ export class SpaceItem extends React.PureComponent<IItemProps, IItemState> {
space={space}
className={isInvite ? "mx_SpaceButton_invite" : undefined}
selected={activeSpaces.includes(space.roomId)}
label={space.name}
label={this.state.name}
contextMenuTooltip={_t("Space options")}
notificationState={notificationState}
isNarrow={isPanelCollapsed}