diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 4daab63..29ebdb9 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -109,6 +109,7 @@ "mongodb": "^4.4.1", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-hotkeys": "^2.0.0", "react-icons": "^4.3.1", "react-query": "^3.34.16", "recoil": "^0.6.1" diff --git a/packages/desktop/src/pages/Home/selectedConversation/index.tsx b/packages/desktop/src/pages/Home/selectedConversation/index.tsx index 2b6f733..38d4f1a 100644 --- a/packages/desktop/src/pages/Home/selectedConversation/index.tsx +++ b/packages/desktop/src/pages/Home/selectedConversation/index.tsx @@ -9,6 +9,7 @@ import { import { $selectedConversation } from "../../../controller/recoil"; import { Dimensions } from "../../../electron/constants"; import { FaWindowClose } from "react-icons/fa"; +import { GlobalHotKeys } from "react-hotkeys"; import { RelationshipState } from "@nirvana/core/models/relationship.model"; import UpdateRelationshipStateRequest from "@nirvana/core/requests/updateRelationshipState.request"; import moment from "moment"; @@ -124,34 +125,48 @@ export default function SelectedConversation() { } }; + // hot keys for closing this window + const handleClose = () => { + setSelectedConvo(null); + }; + const keyMap = { CLOSE_SELECTED_CONVO: "esc" }; + const handlers = { CLOSE_SELECTED_CONVO: handleClose }; + return ( -
- {/* close marker */} - + <> + - {/* top header/profile information */} - - + {/* close marker */} + - - - - {convoDetailsResponse.contactUser.name} - - - {convoDetailsResponse.contactUser.status} + + {/* top header/profile information */} + + + + + + {convoDetailsResponse.contactUser.name} + + + {convoDetailsResponse.contactUser.status} + + + {`joined ${moment( + convoDetailsResponse.contactUser.createdDate + ).fromNow()}`} - - {`joined ${moment( - convoDetailsResponse.contactUser.createdDate - ).fromNow()}`} - - {renderMainContent()} -
+ {renderMainContent()} + + ); } diff --git a/yarn.lock b/yarn.lock index f1d4395..598d010 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6113,7 +6113,7 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -6603,6 +6603,13 @@ react-dom@^17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" +react-hotkeys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f" + integrity sha512-3n3OU8vLX/pfcJrR3xJ1zlww6KS1kEJt0Whxc4FiGV+MJrQ1mYSYI3qS/11d2MJDFm8IhOXMTFQirfu6AVOF6Q== + dependencies: + prop-types "^15.6.1" + react-icons@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.3.1.tgz#2fa92aebbbc71f43d2db2ed1aed07361124e91ca"