Go to space landing page when clicking on a selected space (#6442)
* Go to space landing page when clicking on a selected space Signed-off-by: Robin Townsend <robin@robin.town> * Go to home landing page when clicking on selected home space Signed-off-by: Robin Townsend <robin@robin.town> * Remove metaspace behavior * Add tests * Use the dispatcher action enum * Break up the onClick assignment
This commit is contained in:
parent
007b8816df
commit
796e12e789
2 changed files with 92 additions and 8 deletions
|
@ -25,6 +25,8 @@ import { SpaceKey } from "../../../stores/spaces";
|
|||
import SpaceTreeLevelLayoutStore from "../../../stores/spaces/SpaceTreeLevelLayoutStore";
|
||||
import NotificationBadge from "../rooms/NotificationBadge";
|
||||
import { _t } from "../../../languageHandler";
|
||||
import defaultDispatcher from "../../../dispatcher/dispatcher";
|
||||
import { Action } from "../../../dispatcher/actions";
|
||||
import { ContextMenuTooltipButton } from "../../../accessibility/context_menu/ContextMenuTooltipButton";
|
||||
import { toRightOf, useContextMenu } from "../../structures/ContextMenu";
|
||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
|
||||
|
@ -103,6 +105,10 @@ export const SpaceButton: React.FC<IButtonProps> = ({
|
|||
/>;
|
||||
}
|
||||
|
||||
const viewSpaceHome = () => defaultDispatcher.dispatch({ action: Action.ViewRoom, room_id: space.roomId });
|
||||
const activateSpace = () => SpaceStore.instance.setActiveSpace(spaceKey ?? space.roomId);
|
||||
const onClick = props.onClick ?? (selected && space ? viewSpaceHome : activateSpace);
|
||||
|
||||
return (
|
||||
<AccessibleTooltipButton
|
||||
{...props}
|
||||
|
@ -112,7 +118,7 @@ export const SpaceButton: React.FC<IButtonProps> = ({
|
|||
mx_SpaceButton_narrow: isNarrow,
|
||||
})}
|
||||
title={label}
|
||||
onClick={spaceKey ? () => SpaceStore.instance.setActiveSpace(spaceKey) : props.onClick}
|
||||
onClick={onClick}
|
||||
onContextMenu={openMenu}
|
||||
forceHide={!isNarrow || menuDisplayed}
|
||||
inputRef={handle}
|
||||
|
@ -261,12 +267,6 @@ export class SpaceItem extends React.PureComponent<IItemProps, IItemState> {
|
|||
}
|
||||
};
|
||||
|
||||
private onClick = (ev: React.MouseEvent) => {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
SpaceStore.instance.setActiveSpace(this.props.space.roomId);
|
||||
};
|
||||
|
||||
render() {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const { space, activeSpaces, isNested, isPanelCollapsed, onExpand, parents, innerRef, dragHandleProps,
|
||||
|
@ -328,7 +328,6 @@ export class SpaceItem extends React.PureComponent<IItemProps, IItemState> {
|
|||
notificationState={notificationState}
|
||||
isNarrow={isPanelCollapsed}
|
||||
avatarSize={isNested ? 24 : 32}
|
||||
onClick={this.onClick}
|
||||
onKeyDown={this.onKeyDown}
|
||||
ContextMenuComponent={this.props.space.getMyMembership() === "join" ? SpaceContextMenu : undefined}
|
||||
>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue