Files
supabase/apps/www/components/LaunchWeek/hooks/useLwGame.tsx
2024-08-02 08:41:50 -03:00

60 lines
955 B
TypeScript

import { useEffect, useState } from 'react'
import useConfData from './use-conf-data'
export const VALID_KEYS = [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
]
const useLwGame = (disabled?: boolean) => {
const [isGameMode, setIsGameMode] = useState(false)
function onKeyDown(event: KeyboardEvent) {
if (disabled) return
if (event.key === 'Escape') {
setIsGameMode(false)
}
const newKey = event.key.toLocaleLowerCase()
if (!(event.metaKey || event.ctrlKey) && VALID_KEYS.includes(newKey)) {
if (!isGameMode) setIsGameMode(true)
}
}
useEffect(() => {
if (!disabled) window.addEventListener('keydown', onKeyDown)
return () => window.removeEventListener('keydown', onKeyDown)
}, [disabled])
return { isGameMode, setIsGameMode }
}
export default useLwGame