@@ -19,7 +19,8 @@ import { useHMKDevice } from "@/hooks/use-hmk-device"
1919import { createConfigurator } from "@/lib/create-configurator"
2020import { isWebHIDSupported } from "@/lib/utils"
2121import { useQueryClient } from "@tanstack/react-query"
22- import { useEffect , useState } from "react"
22+ import { useCallback , useEffect , useState } from "react"
23+ import { toast } from "sonner"
2324import { Configurator } from "./configurator/configurator"
2425import { ConfiguratorLayout } from "./configurator/layout"
2526import { ConfiguratorProvider } from "./providers/configurator-provider"
@@ -36,6 +37,18 @@ export function AppConfigurator() {
3637
3738 const [ webHIDSupported , setWebHIDSupported ] = useState ( false )
3839
40+ const connect = useCallback ( async ( ) => {
41+ try {
42+ await hmkDevice . connect ( )
43+ } catch ( error ) {
44+ if ( error instanceof Error ) {
45+ toast . error ( `Failed to connect: ${ error . message } ` )
46+ } else {
47+ console . error ( error )
48+ }
49+ }
50+ } , [ hmkDevice ] )
51+
3952 // Prevent SSR errors by only checking WebHID support on the client side
4053 useEffect ( ( ) => setWebHIDSupported ( isWebHIDSupported ( ) ) , [ ] )
4154
@@ -44,9 +57,9 @@ export function AppConfigurator() {
4457 queryClient . clear ( )
4558 reset ( )
4659 } else if ( webHIDSupported ) {
47- hmkDevice . connect ( )
60+ connect ( )
4861 }
49- } , [ hmkDevice , queryClient , reset , webHIDSupported ] )
62+ } , [ connect , hmkDevice . status , queryClient , reset , webHIDSupported ] )
5063
5164 return (
5265 < ConfiguratorProvider configurator = { useAppConfigurator ( ) } >
@@ -58,7 +71,7 @@ export function AppConfigurator() {
5871 ) : (
5972 < div className = "flex w-full flex-1 flex-col items-center justify-center p-12" >
6073 { webHIDSupported ? (
61- < Button onClick = { hmkDevice . connect } > Authorize Device</ Button >
74+ < Button onClick = { connect } > Authorize Device</ Button >
6275 ) : (
6376 < p > WebHID is not supported in this browser.</ p >
6477 ) }
0 commit comments