import 'package:flutter/material.dart'; import 'package:pshared/models/payment/payment.dart'; import 'package:pweb/pages/report/details/row.dart'; import 'package:pweb/pages/report/details/section.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; class PaymentMetadataSection extends StatelessWidget { final Payment payment; const PaymentMetadataSection({ super.key, required this.payment, }); @override Widget build(BuildContext context) { final loc = AppLocalizations.of(context)!; final metadata = payment.metadata ?? const {}; const allowedKeys = {'upload_filename', 'upload_rows'}; final filtered = Map.fromEntries( metadata.entries.where((entry) => allowedKeys.contains(entry.key)), ); if (filtered.isEmpty) { return DetailsSection( title: loc.paymentDetailsMetadata, children: [ Text( loc.metadataEmpty, style: Theme.of(context).textTheme.bodyMedium, ), ], ); } final entries = filtered.entries.toList() ..sort((a, b) => a.key.compareTo(b.key)); return DetailsSection( title: loc.paymentDetailsMetadata, children: entries .map( (entry) => DetailRow( label: _metadataLabel(loc, entry.key), value: entry.value, monospaced: true, ), ) .toList(), ); } } String _metadataLabel(AppLocalizations loc, String key) { switch (key) { case 'upload_filename': return loc.metadataUploadFileName; case 'upload_rows': return loc.metadataTotalRecipients; default: return key; } }