remove unused haptics hook
This commit is contained in:
@@ -1,61 +0,0 @@
|
|||||||
// Sneaky way of triggering haptic feedback, without using the vibration API (not available on iOS)
|
|
||||||
// Source: https://github.com/posaune0423/use-haptic
|
|
||||||
|
|
||||||
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
||||||
|
|
||||||
const detectiOS = (): boolean => {
|
|
||||||
if (typeof navigator === "undefined") {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const toMatch = [/iPhone/i, /iPad/i, /iPod/i];
|
|
||||||
|
|
||||||
return toMatch.some((toMatchItem) => {
|
|
||||||
return RegExp(toMatchItem).exec(navigator.userAgent);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const useHaptic = (
|
|
||||||
duration = 200,
|
|
||||||
): { triggerHaptic: () => void } => {
|
|
||||||
const inputRef = useRef<HTMLInputElement | null>(null);
|
|
||||||
const labelRef = useRef<HTMLLabelElement | null>(null);
|
|
||||||
const isIOS = useMemo(() => detectiOS(), []);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const input = document.createElement("input");
|
|
||||||
input.type = "checkbox";
|
|
||||||
input.id = "haptic-switch";
|
|
||||||
input.setAttribute("switch", "");
|
|
||||||
input.style.display = "none";
|
|
||||||
document.body.appendChild(input);
|
|
||||||
inputRef.current = input;
|
|
||||||
|
|
||||||
const label = document.createElement("label");
|
|
||||||
label.htmlFor = "haptic-switch";
|
|
||||||
label.style.display = "none";
|
|
||||||
document.body.appendChild(label);
|
|
||||||
labelRef.current = label;
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
document.body.removeChild(input);
|
|
||||||
document.body.removeChild(label);
|
|
||||||
};
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const triggerHaptic = useCallback(() => {
|
|
||||||
if (isIOS) {
|
|
||||||
labelRef.current?.click();
|
|
||||||
} else {
|
|
||||||
if (navigator?.vibrate) {
|
|
||||||
navigator.vibrate(duration);
|
|
||||||
} else {
|
|
||||||
labelRef.current?.click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, [isIOS]);
|
|
||||||
|
|
||||||
return { triggerHaptic };
|
|
||||||
};
|
|
||||||
|
|
||||||
export default useHaptic;
|
|
||||||
Reference in New Issue
Block a user