environment_monitoring_app/lib/screens/settings/telegram_alert_settings.dart

124 lines
4.7 KiB
Dart

// lib/screens/settings/telegram_alert_settings.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:environment_monitoring_app/auth_provider.dart';
import 'package:environment_monitoring_app/services/settings_service.dart';
class TelegramAlertSettingsScreen extends StatelessWidget {
TelegramAlertSettingsScreen({super.key});
// Helper service for parsing settings
final SettingsService _settingsService = SettingsService();
Widget _buildChatIdEntry(String label, String value) {
return ListTile(
contentPadding: EdgeInsets.zero,
leading: const Icon(Icons.telegram, size: 20),
title: Text('$label Chat ID'),
subtitle: Text(value.isNotEmpty ? value : 'Not Set'),
dense: true,
);
}
Widget _buildSectionHeader(BuildContext context, String title) {
return Padding(
padding: const EdgeInsets.fromLTRB(8.0, 24.0, 8.0, 16.0),
child: Text(
title,
style: Theme.of(context)
.textTheme
.headlineSmall
?.copyWith(fontWeight: FontWeight.bold),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Telegram Alert Settings"),
),
body: Consumer<AuthProvider>(
builder: (context, auth, child) {
final appSettings = auth.appSettings;
return ListView(
padding: const EdgeInsets.all(16.0),
children: [
_buildSectionHeader(context, "Telegram Alerts"),
Card(
margin: EdgeInsets.zero,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
// --- MARINE SECTION ---
ExpansionTile(
title: const Text('Marine Alerts',
style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: true,
children: [
_buildChatIdEntry('In-Situ',
_settingsService.getInSituChatId(appSettings)),
_buildChatIdEntry('Tarball',
_settingsService.getTarballChatId(appSettings)),
_buildChatIdEntry(
'Investigative',
_settingsService
.getMarineInvestigativeChatId(appSettings)),
// --- ADDED: Marine Report ---
_buildChatIdEntry(
'NPE Report',
_settingsService.getMarineReportChatId(appSettings)),
],
),
// --- RIVER SECTION ---
ExpansionTile(
title: const Text('River Alerts',
style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: false,
children: [
_buildChatIdEntry('In-Situ',
_settingsService.getRiverInSituChatId(appSettings)),
_buildChatIdEntry(
'Triennial',
_settingsService
.getRiverTriennialChatId(appSettings)),
_buildChatIdEntry(
'Investigative',
_settingsService
.getRiverInvestigativeChatId(appSettings)),
// --- ADDED: River Report ---
_buildChatIdEntry(
'NPE Report',
_settingsService.getRiverReportChatId(appSettings)),
],
),
// --- AIR SECTION ---
ExpansionTile(
title: const Text('Air Alerts',
style: TextStyle(fontWeight: FontWeight.bold)),
initiallyExpanded: false,
children: [
_buildChatIdEntry('Manual',
_settingsService.getAirManualChatId(appSettings)),
_buildChatIdEntry(
'Investigative',
_settingsService
.getAirInvestigativeChatId(appSettings)),
],
),
],
),
),
),
],
);
},
),
);
}
}