From 6f649a24aa3460f140f68435b82a6f1e42bec8df Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Tue, 9 Jul 2024 16:07:31 +0300 Subject: [PATCH] Fix Bug 69075 - Accounts: Groups. Added support for "Enter" and "Backspace" hotkeys --- .../src/pages/Home/Hooks/useAccountsHotkeys.ts | 16 +++++++++++++--- .../src/pages/Home/Section/AccountsBody/index.js | 8 ++++++-- .../client/src/store/AccountsHotkeysStore.ts | 13 +++++++++++++ packages/client/src/store/FilesActionsStore.js | 5 +++-- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/packages/client/src/pages/Home/Hooks/useAccountsHotkeys.ts b/packages/client/src/pages/Home/Hooks/useAccountsHotkeys.ts index 70bd55f570..99841e5682 100644 --- a/packages/client/src/pages/Home/Hooks/useAccountsHotkeys.ts +++ b/packages/client/src/pages/Home/Hooks/useAccountsHotkeys.ts @@ -37,7 +37,8 @@ interface AccountsHotkeysProps { activateHotkeys: (e: KeyboardEvent) => void; selectAll: () => void; deselectAll: () => void; - onClickBack: () => void; + openItem: () => void; + onClickBack: (fromHotkeys: boolean) => void; } const useAccountsHotkeys = ({ @@ -48,6 +49,7 @@ const useAccountsHotkeys = ({ activateHotkeys, selectAll, deselectAll, + openItem, onClickBack, }: AccountsHotkeysProps) => { const [isEnabled, setIsEnabled] = useState(true); @@ -83,6 +85,11 @@ const useAccountsHotkeys = ({ }; }, [onKeyDown]); + const onClickBackAction = () => { + deselectAll(); + onClickBack(true); + }; + useHotkeys( "*", (e) => { @@ -114,8 +121,11 @@ const useAccountsHotkeys = ({ // Deselect all accounts useHotkeys("shift+n, ESC", deselectAll, hotkeysFilter); - //Back to parent folder - useHotkeys("Backspace", onClickBack, hotkeysFilter); + // Open item + useHotkeys("Enter", () => openItem(), hotkeysFilter); + + // Back to parent folder + useHotkeys("Backspace", onClickBackAction, hotkeysFilter); }; export default useAccountsHotkeys; diff --git a/packages/client/src/pages/Home/Section/AccountsBody/index.js b/packages/client/src/pages/Home/Section/AccountsBody/index.js index 3bd570a8c9..d4bedcf81a 100644 --- a/packages/client/src/pages/Home/Section/AccountsBody/index.js +++ b/packages/client/src/pages/Home/Section/AccountsBody/index.js @@ -33,7 +33,6 @@ import Groups from "./Groups"; import InsideGroup from "./InsideGroup"; import { withTranslation } from "react-i18next"; -import { Consumer } from "@docspace/shared/utils"; import withLoader from "SRC_DIR/HOCs/withLoader"; import { useAccountsHotkeys } from "../../Hooks"; @@ -57,6 +56,7 @@ const SectionBodyContent = (props) => { setHotkeyCaret, selectAll, deselectAll, + openItem, onClickBack, } = props; @@ -71,6 +71,7 @@ const SectionBodyContent = (props) => { activateHotkeys, selectAll, deselectAll, + openItem, onClickBack, }); @@ -165,7 +166,9 @@ export default inject(({ peopleStore, filesActionsStore }) => { selectAll, deselectAll, + openItem, } = peopleStore.accountsHotkeysStore; + const { onClickBack } = filesActionsStore; return { accountsViewAs, @@ -187,7 +190,8 @@ export default inject(({ peopleStore, filesActionsStore }) => { setHotkeyCaret, selectAll, deselectAll, - onClickBack: filesActionsStore.onClickBack, + openItem, + onClickBack, }; })( withTranslation(["People", "Common", "PeopleTranslations"])( diff --git a/packages/client/src/store/AccountsHotkeysStore.ts b/packages/client/src/store/AccountsHotkeysStore.ts index e6ea685c07..d8a669658c 100644 --- a/packages/client/src/store/AccountsHotkeysStore.ts +++ b/packages/client/src/store/AccountsHotkeysStore.ts @@ -231,6 +231,19 @@ class AccountsHotkeysStore { selectAll(); }; + openItem = () => { + const someDialogIsOpen = checkDialogsOpen(); + if ( + this.isAccountsPage || + this.accountsSelection.length !== 1 || + someDialogIsOpen + ) + return; + + const item = this.accountsSelection[0]; + this.peopleStore.groupsStore.openGroupAction(item.id, true, item.name); + }; + activateHotkeys = (e: KeyboardEvent) => { const infiniteLoaderComponent = document.getElementsByClassName( "ReactVirtualized__List", diff --git a/packages/client/src/store/FilesActionsStore.js b/packages/client/src/store/FilesActionsStore.js index 0fa4f15751..2a0cef1eb7 100644 --- a/packages/client/src/store/FilesActionsStore.js +++ b/packages/client/src/store/FilesActionsStore.js @@ -2443,8 +2443,8 @@ class FilesActionStore { } }; - onClickBack = () => { - const { roomType, ...rest } = this.selectedFolderStore; + onClickBack = (fromHotkeys = true) => { + const { roomType } = this.selectedFolderStore; const { setSelectedNode } = this.treeFoldersStore; const { clearFiles, setBufferSelection } = this.filesStore; const { clearInsideGroup, insideGroupBackUrl } = @@ -2510,6 +2510,7 @@ class FilesActionStore { setSelectedNode(["accounts", "people", "filter"]); + if (fromHotkeys) return; return window.DocSpace.navigate(`${path}?${params}`, { replace: true }); } };