Space panel should watch spaces for space name changes (#7432)
This commit is contained in:
parent
70dc03552c
commit
38634f86d1
3 changed files with 18 additions and 4 deletions
|
@ -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}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue