import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:island/models/abuse_report.dart'; import 'package:island/models/abuse_report_type.dart'; import 'package:island/services/abuse_report_service.dart'; import 'package:island/widgets/app_scaffold.dart'; import 'package:styled_widget/styled_widget.dart'; class AbuseReportDetailScreen extends ConsumerStatefulWidget { final String reportId; const AbuseReportDetailScreen({super.key, required this.reportId}); @override ConsumerState createState() => _AbuseReportDetailScreenState(); } class _AbuseReportDetailScreenState extends ConsumerState { Future? _reportFuture; @override void initState() { super.initState(); _reportFuture = ref .read(abuseReportServiceProvider) .getReport(widget.reportId); } @override Widget build(BuildContext context) { return AppScaffold( appBar: AppBar(title: const Text('Abuse Report Details')), body: FutureBuilder( future: _reportFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasError) { return Center(child: Text('Error: ${snapshot.error}')); } else if (snapshot.hasData) { final report = snapshot.data!; return Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _buildDetailRow(context, 'Report ID', report.id), _buildDetailRow( context, 'Resource Identifier', report.resourceIdentifier, ), _buildDetailRow( context, 'Type', AbuseReportType.fromValue(report.type).displayName, ), _buildDetailRow(context, 'Reason', report.reason), _buildDetailRow( context, 'Resolved At', report.resolvedAt?.toString() ?? 'N/A', ), _buildDetailRow( context, 'Resolution', report.resolution ?? 'N/A', ), _buildDetailRow(context, 'Account ID', report.accountId), _buildDetailRow( context, 'Created At', report.createdAt.toString(), ), _buildDetailRow( context, 'Updated At', report.updatedAt.toString(), ), ], ), ); } else { return const Center(child: Text('No data')); } }, ), ); } Widget _buildDetailRow(BuildContext context, String label, String value) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(label, style: Theme.of(context).textTheme.titleMedium).bold(), Text(value, style: Theme.of(context).textTheme.bodyLarge), ], ), ); } }