mirror of
https://github.com/linsa-io/linsa.git
synced 2026-02-25 03:45:02 +01:00
* wip * wip page * chore: style * wip pages * wip pages * chore: toggle * chore: link * feat: topic search * chore: page section * refactor: apply tailwind class ordering * fix: handle loggedIn user for guest route * feat: folder & image schema * chore: move utils to shared * refactor: tailwind class ordering * feat: img ext for editor * refactor: remove qa * fix: tanstack start * fix: wrong import * chore: use toast * chore: schema
28 lines
673 B
TypeScript
28 lines
673 B
TypeScript
import { isClient } from "@shared/utils"
|
|
import * as React from "react"
|
|
|
|
export function useTouchSensor() {
|
|
const [isTouchDevice, setIsTouchDevice] = React.useState(false)
|
|
|
|
React.useEffect(() => {
|
|
const detectTouch = () => {
|
|
setIsTouchDevice(
|
|
isClient() &&
|
|
(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
|
|
}
|