import {useSettingsStore} from "@/stores/SettingsStore.js"; /** * Composable для безопасной работы с HapticFeedback * Проверяет настройку haptic_enabled перед использованием * @returns {object} Объект с методами haptic feedback, которые безопасно вызываются */ export function useHapticFeedback() { const settings = useSettingsStore(); const haptic = window.Telegram?.WebApp?.HapticFeedback; // Возвращаем обёртку с методами, которые проверяют настройку при каждом вызове return { impactOccurred: (style) => { // Проверяем настройку при каждом вызове (реактивно) const isHapticEnabled = settings.haptic_enabled !== false; if (!haptic || !isHapticEnabled || !haptic.impactOccurred) { return; } haptic.impactOccurred(style); }, selectionChanged: () => { // Проверяем настройку при каждом вызове (реактивно) const isHapticEnabled = settings.haptic_enabled !== false; if (!haptic || !isHapticEnabled || !haptic.selectionChanged) { return; } haptic.selectionChanged(); }, notificationOccurred: (type) => { // Проверяем настройку при каждом вызове (реактивно) const isHapticEnabled = settings.haptic_enabled !== false; if (!haptic || !isHapticEnabled || !haptic.notificationOccurred) { return; } haptic.notificationOccurred(type); }, }; }