environment_monitoring_app/lib/services/settings_service.dart

86 lines
3.1 KiB
Dart

// lib/services/settings_service.dart
import 'package:flutter/foundation.dart';
class SettingsService {
// The service no longer manages its own state or makes API calls.
// It is now a utility for parsing the settings list managed by AuthProvider.
/// A private helper method to find a specific setting value from the cached list.
String _getChatId(List<Map<String, dynamic>>? settings, String moduleName) {
if (settings == null) {
debugPrint("SettingsService: Cannot get Chat ID for '$moduleName', settings list is null.");
return '';
}
try {
// Find the specific setting map where the module_name and setting_key match.
final setting = settings.firstWhere(
(s) => s['module_name'] == moduleName && s['setting_key'] == 'telegram_chat_id',
// If no matching setting is found, return an empty map to avoid errors.
orElse: () => {},
);
if (setting.isNotEmpty) {
return setting['setting_value']?.toString() ?? '';
}
} catch (e) {
debugPrint("SettingsService: Error parsing chat ID for '$moduleName': $e");
}
debugPrint("SettingsService: Chat ID for module '$moduleName' not found.");
return '';
}
/// Gets the Chat ID for the Marine In-Situ module.
String getInSituChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'marine_in_situ');
}
/// Gets the Chat ID for the Tarball module.
String getTarballChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'marine_tarball');
}
/// Gets the Chat ID for the Marine Investigative module.
String getMarineInvestigativeChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'marine_investigative');
}
// --- ADDED: Getter for Marine NPE Report ---
String getMarineReportChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'marine_report');
}
// ------------------------------------------
/// Gets the Chat ID for the River In-Situ module.
String getRiverInSituChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'river_in_situ');
}
/// Gets the Chat ID for the River Triennial module.
String getRiverTriennialChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'river_triennial');
}
/// Gets the Chat ID for the River Investigative module.
String getRiverInvestigativeChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'river_investigative');
}
// --- ADDED: Getter for River NPE Report ---
String getRiverReportChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'river_report');
}
// ------------------------------------------
/// Gets the Chat ID for the Air Manual module.
String getAirManualChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'air_manual');
}
/// Gets the Chat ID for the Air Investigative module.
String getAirInvestigativeChatId(List<Map<String, dynamic>>? settings) {
return _getChatId(settings, 'air_investigative');
}
}