feat: add haptic feedback toggle setting
- Add haptic_enabled field to AppDTO with default value true - Update SettingsSerializerService to deserialize haptic_enabled - Add haptic_enabled setting in admin panel (GeneralView) with toggle - Update admin settings store to include haptic_enabled default value - Update SPA SettingsStore to load haptic_enabled from API - Refactor useHapticFeedback composable to return safe wrapper object - Replace all direct window.Telegram.WebApp.HapticFeedback usage with composable - Update useHapticScroll to use useHapticFeedback composable - Add getHapticFeedback helper function in CheckoutStore for store usage - Add haptic_enabled default value to app.php configuration - All haptic feedback methods now check settings internally - Remove redundant if checks from components (handled in composable)
This commit is contained in:
@@ -10,6 +10,7 @@ return [
|
||||
"app_debug" => false,
|
||||
'image_aspect_ratio' => '1:1',
|
||||
'image_crop_algorithm' => 'cover',
|
||||
'haptic_enabled' => true,
|
||||
],
|
||||
|
||||
'telegram' => [
|
||||
|
||||
@@ -12,6 +12,7 @@ final class AppDTO
|
||||
private bool $appDebug;
|
||||
private int $languageId;
|
||||
private string $shopBaseUrl;
|
||||
private bool $hapticEnabled;
|
||||
|
||||
public function __construct(
|
||||
bool $appEnabled,
|
||||
@@ -21,7 +22,8 @@ final class AppDTO
|
||||
string $themeDark,
|
||||
bool $appDebug,
|
||||
int $languageId,
|
||||
string $shopBaseUrl
|
||||
string $shopBaseUrl,
|
||||
bool $hapticEnabled = true
|
||||
) {
|
||||
$this->appEnabled = $appEnabled;
|
||||
$this->appName = $appName;
|
||||
@@ -31,6 +33,7 @@ final class AppDTO
|
||||
$this->appDebug = $appDebug;
|
||||
$this->languageId = $languageId;
|
||||
$this->shopBaseUrl = $shopBaseUrl;
|
||||
$this->hapticEnabled = $hapticEnabled;
|
||||
}
|
||||
|
||||
public function isAppEnabled(): bool
|
||||
@@ -73,6 +76,11 @@ final class AppDTO
|
||||
return $this->shopBaseUrl;
|
||||
}
|
||||
|
||||
public function isHapticEnabled(): bool
|
||||
{
|
||||
return $this->hapticEnabled;
|
||||
}
|
||||
|
||||
public function toArray(): array
|
||||
{
|
||||
return [
|
||||
@@ -84,6 +92,7 @@ final class AppDTO
|
||||
'app_debug' => $this->isAppDebug(),
|
||||
'language_id' => $this->getLanguageId(),
|
||||
'shop_base_url' => $this->getShopBaseUrl(),
|
||||
'haptic_enabled' => $this->isHapticEnabled(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ class SettingsHandler
|
||||
'mainpage_blocks' => $this->settings->get('mainpage_blocks', []),
|
||||
'privacy_policy_link' => $this->settings->get('app.privacy_policy_link'),
|
||||
'image_aspect_ratio' => $this->settings->get('app.image_aspect_ratio', '1:1'),
|
||||
'haptic_enabled' => $appConfig->isHapticEnabled(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,8 @@ class SettingsSerializerService
|
||||
$data['theme_dark'] ?? 'dark',
|
||||
$data['app_debug'] ?? false,
|
||||
$data['language_id'],
|
||||
$data['shop_base_url']
|
||||
$data['shop_base_url'],
|
||||
$data['haptic_enabled'] ?? true
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user