Files
archived-linsa/web/hooks/use-touch-sensor.ts
Aslam 867478d55c fix: Link, Pages, Topic, Hook and Others (#178)
* chore: remove useKeyDownListener

* chore: remove react-use, update jazz version and add query string

* chore: update jazz version

* chore: use simple mac or win utils code

* feat(util): add isTextInput

* feat(hooks): all needed hooks

* fix: link bunch stuff

* fix: page bunch stuff

* chore: bunch update for custom component

* chore: use throttle from internal hook

* chore: topic bunch stuff

* chore: update layout

* fix: truncate content header of topic detail
2024-09-23 23:16:02 +07:00

28 lines
610 B
TypeScript

import { useState, useEffect } from "react"
const SSR = typeof window === "undefined"
export function useTouchSensor() {
const [isTouchDevice, setIsTouchDevice] = useState(false)
useEffect(() => {
const detectTouch = () => {
setIsTouchDevice(
!SSR &&
(window.matchMedia?.("(hover: none) and (pointer: coarse)")?.matches ||
"ontouchstart" in window ||
navigator.maxTouchPoints > 0)
)
}
detectTouch()
window.addEventListener("touchstart", detectTouch, false)
return () => {
window.removeEventListener("touchstart", detectTouch)
}
}, [])
return isTouchDevice
}