From 85f80b1d0ab463320dadc1c052ad9d6fa9871eb2 Mon Sep 17 00:00:00 2001 From: Florian D Date: Thu, 13 Feb 2025 16:18:41 +0100 Subject: [PATCH] Replace `focus_room_filter` dispatch by `Action.OpenSpotlight` (#29259) * refactor(room search): replace `focus_room_filter` dispatch by `Action.OpenSpotlight` * test(LoggedInView): add test to Ctrl+k shortcut --- src/components/structures/LoggedInView.tsx | 4 +--- src/components/structures/RoomSearch.tsx | 17 ----------------- .../components/structures/LoggedInView-test.tsx | 8 ++++++++ 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/components/structures/LoggedInView.tsx b/src/components/structures/LoggedInView.tsx index 34225985030..5969dd1ccbd 100644 --- a/src/components/structures/LoggedInView.tsx +++ b/src/components/structures/LoggedInView.tsx @@ -501,9 +501,7 @@ class LoggedInView extends React.Component { handled = true; break; case KeyBindingAction.FilterRooms: - dis.dispatch({ - action: "focus_room_filter", - }); + dis.fire(Action.OpenSpotlight); handled = true; break; case KeyBindingAction.ToggleUserMenu: diff --git a/src/components/structures/RoomSearch.tsx b/src/components/structures/RoomSearch.tsx index 05731c79a00..439c1e47feb 100644 --- a/src/components/structures/RoomSearch.tsx +++ b/src/components/structures/RoomSearch.tsx @@ -11,7 +11,6 @@ import * as React from "react"; import { ALTERNATE_KEY_NAME } from "../../accessibility/KeyboardShortcuts"; import defaultDispatcher from "../../dispatcher/dispatcher"; -import { type ActionPayload } from "../../dispatcher/payloads"; import { IS_MAC, Key } from "../../Keyboard"; import { _t } from "../../languageHandler"; import AccessibleButton from "../views/elements/AccessibleButton"; @@ -22,26 +21,10 @@ interface IProps { } export default class RoomSearch extends React.PureComponent { - private dispatcherRef?: string; - - public componentDidMount(): void { - this.dispatcherRef = defaultDispatcher.register(this.onAction); - } - - public componentWillUnmount(): void { - defaultDispatcher.unregister(this.dispatcherRef); - } - private openSpotlight(): void { defaultDispatcher.fire(Action.OpenSpotlight); } - private onAction = (payload: ActionPayload): void => { - if (payload.action === "focus_room_filter") { - this.openSpotlight(); - } - }; - public render(): React.ReactNode { const classes = classNames( { diff --git a/test/unit-tests/components/structures/LoggedInView-test.tsx b/test/unit-tests/components/structures/LoggedInView-test.tsx index cddbf312f61..beca86ddcf1 100644 --- a/test/unit-tests/components/structures/LoggedInView-test.tsx +++ b/test/unit-tests/components/structures/LoggedInView-test.tsx @@ -421,6 +421,14 @@ describe("", () => { expect(defaultDispatcher.dispatch).not.toHaveBeenCalledWith({ action: Action.ViewHomePage }); }); + it("should open spotlight when Ctrl+k is fired", async () => { + jest.spyOn(defaultDispatcher, "fire"); + + getComponent(); + await userEvent.keyboard("{Control>}k{/Control}"); + expect(defaultDispatcher.fire).toHaveBeenCalledWith(Action.OpenSpotlight); + }); + describe("timezone updates", () => { const userTimezone = "Europe/London"; const originalController = SETTINGS["userTimezonePublish"].controller;