You've already forked matrix-react-sdk
mirror of
https://github.com/matrix-org/matrix-react-sdk.git
synced 2025-07-31 13:44:28 +03:00
Space panel should watch spaces for space name changes (#7432)
This commit is contained in:
committed by
GitHub
parent
70dc03552c
commit
38634f86d1
@ -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}
|
||||
|
Reference in New Issue
Block a user