// lib/services/server_config_service.dart import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; class ServerConfigService { static const String _activeApiConfigKey = 'active_api_config'; static const String _activeFtpConfigKey = 'active_ftp_config'; // A default URL to prevent crashes if no config is set. static const String _defaultApiUrl = 'https://dev14.pstw.com.my/v1'; // --- API Config Methods --- /// Saves the selected API configuration as the currently active one. Future setActiveApiConfig(Map config) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_activeApiConfigKey, jsonEncode(config)); } /// Retrieves the currently active API configuration from local storage. Future?> getActiveApiConfig() async { final prefs = await SharedPreferences.getInstance(); final String? configString = prefs.getString(_activeApiConfigKey); if (configString != null) { return jsonDecode(configString) as Map; } return null; } /// Gets the API Base URL from the active configuration. /// Falls back to a default URL if none is set. Future getActiveApiUrl() async { final config = await getActiveApiConfig(); // The key from the database is 'api_url'. return config?['api_url'] as String? ?? _defaultApiUrl; } // --- FTP Config Methods --- /// Saves the selected FTP configuration as the currently active one. Future setActiveFtpConfig(Map config) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_activeFtpConfigKey, jsonEncode(config)); } /// Retrieves the currently active FTP configuration from local storage. Future?> getActiveFtpConfig() async { final prefs = await SharedPreferences.getInstance(); final String? configString = prefs.getString(_activeFtpConfigKey); if (configString != null) { return jsonDecode(configString) as Map; } return null; } }