web/haptics: don't use haptics if disabled in settings

This commit is contained in:
wukko 2025-03-05 21:40:26 +06:00
parent 8af4c69be3
commit 712318612d
No known key found for this signature in database
GPG Key ID: 3E30B3F26C7B4AA2
2 changed files with 12 additions and 7 deletions

View File

@ -11,7 +11,6 @@ const device = {
iPhone: false,
iPad: false,
iOS: false,
modernIOS: false,
android: false,
mobile: false,
},
@ -26,6 +25,7 @@ const device = {
supports: {
share: false,
directDownload: false,
haptics: false,
},
userAgent: "sveltekit server",
}
@ -55,7 +55,6 @@ if (browser) {
iPhone,
iPad,
iOS,
modernIOS,
};
device.browser = {
@ -71,6 +70,10 @@ if (browser) {
device.supports = {
share: navigator.share !== undefined,
directDownload: !(installed && iOS),
// not sure if vibrations feel the same on android,
// so they're enabled only on ios 18+ for now
haptics: modernIOS,
};
device.userAgent = navigator.userAgent;

View File

@ -1,11 +1,13 @@
import { get } from "svelte/store";
import { device } from "$lib/device";
import settings from "$lib/state/settings";
// not sure if vibrations feel the same on android,
// so they're enabled only on ios 18+ for now
const useHaptics = device.is.modernIOS;
const canUseHaptics = () => {
return device.supports.haptics && !get(settings).appearance.disableHaptics;
}
export const hapticSwitch = () => {
if (!useHaptics) return;
if (!canUseHaptics()) return;
try {
const label = document.createElement("label");
@ -26,7 +28,7 @@ export const hapticSwitch = () => {
}
export const hapticConfirm = () => {
if (!useHaptics) return;
if (!canUseHaptics()) return;
hapticSwitch();
setTimeout(() => hapticSwitch(), 120);