fix attachments with no parentId

This commit is contained in:
2026-06-08 13:17:33 +02:00
parent 6582da60d4
commit fc850795c9
2 changed files with 28 additions and 65 deletions

View File

@@ -90,6 +90,32 @@ class _SharedAttachmentsSectionState extends State<SharedAttachmentsSection> {
// --- SELEZIONE FILE DAL PC/TELEFONO ---
Future<void> _pickFiles() async {
final attachmentsBloc = context.read<AttachmentsBloc>();
String? targetId = attachmentsBloc.state.parentId;
// 🥷 SE L'ID NON C'È (Nuova Operazione), FORZIAMO IL SALVATAGGIO PREVENTIVO!
if (targetId == null || targetId.isEmpty) {
if (widget.onGenerateIdForQr != null) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Salvataggio rapido scheda per allegati... ⏳'),
duration: Duration(seconds: 1),
),
);
// Chiamiamo la funzione passata dal TicketForm/OperationForm
targetId = await widget.onGenerateIdForQr!();
}
// Se il salvataggio fallisce (es. form non valido), ci fermiamo per evitare file orfani
if (targetId == null || targetId.isEmpty) return;
// Comunichiamo immediatamente al BLoC che l'entità padre è stata salvata e ha un nuovo ID.
// Questo eviterà che i file finiscano nei `localFiles` temporanei.
attachmentsBloc.add(ParentEntitySavedEvent(targetId));
}
// Ora che abbiamo la certezza matematica di avere un targetId, apriamo il picker
final result = await FilePicker.pickFiles(
allowMultiple: true,
type: FileType.custom,
@@ -98,8 +124,8 @@ class _SharedAttachmentsSectionState extends State<SharedAttachmentsSection> {
);
if (result != null && mounted) {
// MAGIA: Passiamo direttamente la lista di PlatformFile al tuo BLoC!
context.read<AttachmentsBloc>().add(AddAttachmentsEvent(result.files));
// Ora il BLoC eseguirà l'ambiente di "Upload immediato" (Bivio 2) perché ha l'ID aggiornato!
attachmentsBloc.add(AddAttachmentsEvent(result.files));
}
}