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:
Robin 2022-05-17 09:22:35 -04:00 committed by GitHub
parent 007b8816df
commit 796e12e789
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 92 additions and 8 deletions

View file

@ -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}
>