File tree Expand file tree Collapse file tree 2 files changed +47
-3
lines changed
crates/openconnect-gui/src Expand file tree Collapse file tree 2 files changed +47
-3
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ import { ToastContainer } from "react-toastify";
2020import connected from "./assets/connected-animate.json" ;
2121import Lottie from "lottie-react" ;
2222import { AboutModal } from "./About" ;
23+ import { useKey } from "react-use" ;
2324
2425enum EStatus {
2526 Initialized = "INITIALIZED" ,
@@ -46,6 +47,19 @@ function App() {
4647 const { selectedServer } = useStoredConfigs ( ) ;
4748 const [ isAboutOpened , setIsAboutOpened ] = useState ( false ) ;
4849
50+ useKey (
51+ "Enter" ,
52+ ( ) => {
53+ if ( vpnStatus . status === EStatus . Connected ) {
54+ handleDisconnect ( ) ;
55+ } else if ( selectedServer ) {
56+ handleConnect ( ) ;
57+ }
58+ } ,
59+ undefined ,
60+ [ vpnStatus , selectedServer ]
61+ ) ;
62+
4963 const handleConnect = useCallback ( async ( ) => {
5064 if ( selectedServer ) {
5165 try {
@@ -160,7 +174,7 @@ function App() {
160174 className = "m-3 w-[50%]"
161175 onClick = { handleDisconnect }
162176 >
163- Disconnect
177+ Disconnect [Enter]
164178 </ Button >
165179 ) }
166180 { vpnStatus . status === EStatus . Disconnected ||
@@ -171,7 +185,7 @@ function App() {
171185 className = "m-3 w-full"
172186 onClick = { handleConnect }
173187 >
174- Connect
188+ Connect [Enter]
175189 </ Button >
176190 ) : null }
177191 </ CardFooter >
Original file line number Diff line number Diff line change 88import { FC , PropsWithChildren , useEffect } from "react" ;
99import { ServerEditorModal } from "./ServerEditorModal" ;
1010import { useStoredConfigs } from "./state" ;
11+ import { useKey } from "react-use" ;
1112
1213export const ServerSelector = ( ) => {
1314 const {
@@ -20,6 +21,35 @@ export const ServerSelector = () => {
2021
2122 const { isOpen, onOpen, onOpenChange } = useDisclosure ( ) ;
2223
24+ useKey (
25+ "Tab" ,
26+ ( evt ) => {
27+ evt . preventDefault ( ) ;
28+ if ( serverList . length ) {
29+ const currentIndex = serverList . findIndex (
30+ ( { name } ) => name === selectedName
31+ ) ;
32+ if ( currentIndex !== - 1 ) {
33+ const nextIndex =
34+ currentIndex === serverList . length - 1 ? 0 : currentIndex + 1 ;
35+ const next = serverList [ nextIndex ] . name ;
36+ setSelectedName ( next ) ;
37+ }
38+ }
39+ } ,
40+ undefined ,
41+ [ serverList , selectedName , setSelectedName ]
42+ ) ;
43+
44+ useKey (
45+ "m" ,
46+ ( ) => {
47+ onOpen ( ) ;
48+ } ,
49+ undefined ,
50+ [ onOpen ]
51+ ) ;
52+
2353 useEffect ( ( ) => {
2454 getStoredConfigs ( ) ;
2555 } , [ getStoredConfigs ] ) ;
@@ -49,7 +79,7 @@ export const ServerSelector = () => {
4979 </ Select >
5080 ) }
5181 < Button size = "md" color = "primary" className = "ml-2" onClick = { onOpen } >
52- Manage Server
82+ Manage Server [M]
5383 </ Button >
5484 </ div >
5585 < Divider className = "mt-3 mb-3" > </ Divider >
You can’t perform that action at this time.
0 commit comments