From c4c624667d0bc48e7016d2dd5f518e5bbfb991bd Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 4 Nov 2026 13:39:31 +0100 Subject: [PATCH 1/2] Permette di eliminare le foto di una scheda anche dopo il salvataggio Finora la foto si poteva togliere solo prima di salvare la scheda. - La X compare su tutte le foto (non in sola lettura, non mentre la foto e' ancora in elaborazione). L'eliminazione avviene al salvataggio: uscendo senza salvare le foto restano. - Una foto gia' inviata si toglie prima dal server (nuovo endpoint steup/removeAttachment), poi dal dispositivo e da Scheda.ImageNames. Senza rete la X avvisa e non la toglie; se il server non conferma al salvataggio la foto resta ovunque e compare un avviso. - Una foto salvata ma non ancora inviata si elimina dal dispositivo (con la rete si prova anche a toglierla dal server, senza bloccare). - Togliere una foto salvata non la cancellava mai: il flag ToRemove finiva su un elemento appena rimosso dall'elenco. Ora le foto tolte stanno in una lista a parte fino al salvataggio; ToRemove e' stato eliminato. - FileManager.GetInspectionFiles: le foto in /toUpload si filtravano per nome, ma ImageNames contiene il percorso completo, quindi quelle salvate senza rete non ricomparivano mai riaprendo la scheda. Ora si accetta sia il percorso sia il nome, e il DTO porta anche i byte del file per l'invio. Richiede i Servizi con steup/removeAttachment. Co-Authored-By: Claude Opus 5.5 --- SteUp.Maui/Core/Services/FileManager.cs | 12 +- .../Modal/ModalFormScheda.razor | 132 ++++++++++++++---- SteUp.Shared/Core/Dto/AttachedDto.cs | 1 - .../IntegryApi/IIntegrySteupService.cs | 1 + .../Core/Services/IntegrySteupService.cs | 14 ++ 5 files changed, 130 insertions(+), 30 deletions(-) diff --git a/SteUp.Maui/Core/Services/FileManager.cs b/SteUp.Maui/Core/Services/FileManager.cs index 9764249..29bbece 100644 --- a/SteUp.Maui/Core/Services/FileManager.cs +++ b/SteUp.Maui/Core/Services/FileManager.cs @@ -16,15 +16,15 @@ public class FileManager( private async Task ConvertToDto(FileInfo file, AttachedDto.TypeAttached type, bool isFromToUpload) { - var (origUrl, thumbUrl) = await SaveAndCreateThumbAsync( - await File.ReadAllBytesAsync(file.FullName), - file.Name - ); + var bytes = await File.ReadAllBytesAsync(file.FullName); + var (origUrl, thumbUrl) = await SaveAndCreateThumbAsync(bytes, file.Name); return new AttachedDto { Name = file.Name, Path = file.FullName, + // Servono per inviare le foto rimaste in /toUpload (salvate senza rete). + FileBytes = bytes, TempPath = origUrl, ThumbPath = thumbUrl, Type = type, @@ -101,7 +101,9 @@ public class FileManager( foreach (var file in toUploadFiles) { - if (!fileNameFilter.Contains(file.Name)) + // Scheda.ImageNames contiene il percorso completo restituito da SaveInspectionFile: + // confrontando solo il nome le foto salvate e non ancora inviate non comparivano mai. + if (!fileNameFilter.Contains(file.FullName) && !fileNameFilter.Contains(file.Name)) continue; ct.ThrowIfCancellationRequested(); diff --git a/SteUp.Shared/Components/SingleElements/Modal/ModalFormScheda.razor b/SteUp.Shared/Components/SingleElements/Modal/ModalFormScheda.razor index f1c9f65..f62103a 100644 --- a/SteUp.Shared/Components/SingleElements/Modal/ModalFormScheda.razor +++ b/SteUp.Shared/Components/SingleElements/Modal/ModalFormScheda.razor @@ -171,7 +171,10 @@ } - @if (item.p.ToUpload && !ReadOnly) + @* Rimovibile anche se gia' salvata o inviata. Non mentre e' + in elaborazione: l'indice della foto serve ancora al + caricamento in background. *@ + @if (!ReadOnly && !item.p.ThumbPath.IsNullOrEmpty()) {