import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../domain/entities/app_settings.dart'; /// Local datasource for persisting application settings via SharedPreferences. class SettingsDatasource { final SharedPreferences _prefs; static const String _keyThemeMode = 'settings_theme_mode'; static const String _keyNotifications = 'settings_notifications'; static const String _keySound = 'settings_sound'; static const String _keyHaptic = 'settings_haptic'; static const String _keyTenantId = 'settings_tenant_id'; static const String _keyTenantName = 'settings_tenant_name'; static const String _keyLanguage = 'settings_language'; static const String _keyBiometric = 'settings_biometric'; SettingsDatasource(this._prefs); /// Loads settings from SharedPreferences. AppSettings loadSettings() { final themeModeIndex = _prefs.getInt(_keyThemeMode); return AppSettings( themeMode: themeModeIndex != null ? ThemeMode.values[themeModeIndex] : ThemeMode.dark, notificationsEnabled: _prefs.getBool(_keyNotifications) ?? true, soundEnabled: _prefs.getBool(_keySound) ?? true, hapticFeedback: _prefs.getBool(_keyHaptic) ?? true, selectedTenantId: _prefs.getString(_keyTenantId), selectedTenantName: _prefs.getString(_keyTenantName), language: _prefs.getString(_keyLanguage) ?? 'en', biometricEnabled: _prefs.getBool(_keyBiometric) ?? false, ); } /// Saves settings to SharedPreferences. Future saveSettings(AppSettings settings) async { await _prefs.setInt(_keyThemeMode, settings.themeMode.index); await _prefs.setBool(_keyNotifications, settings.notificationsEnabled); await _prefs.setBool(_keySound, settings.soundEnabled); await _prefs.setBool(_keyHaptic, settings.hapticFeedback); if (settings.selectedTenantId != null) { await _prefs.setString(_keyTenantId, settings.selectedTenantId!); } else { await _prefs.remove(_keyTenantId); } if (settings.selectedTenantName != null) { await _prefs.setString(_keyTenantName, settings.selectedTenantName!); } else { await _prefs.remove(_keyTenantName); } await _prefs.setString(_keyLanguage, settings.language); await _prefs.setBool(_keyBiometric, settings.biometricEnabled); } /// Removes all settings keys from SharedPreferences. Future clearSettings() async { await _prefs.remove(_keyThemeMode); await _prefs.remove(_keyNotifications); await _prefs.remove(_keySound); await _prefs.remove(_keyHaptic); await _prefs.remove(_keyTenantId); await _prefs.remove(_keyTenantName); await _prefs.remove(_keyLanguage); await _prefs.remove(_keyBiometric); } }