Con il permesso negato "Aggiungi una foto" non faceva nulla: il servizio
restituiva null come per un annullamento. Dopo un rifiuto definitivo
Android non ripropone la richiesta, quindi il rilevatore restava bloccato
senza capire perche'.
- AttachedService: la richiesta dei permessi diventa RequestCameraPermissions,
usata anche da SelectImageFromCamera; OpenAppSettings apre le impostazioni
dell'app.
- ModalFormScheda e ModalAddAttached: chiedono i permessi prima di scattare
e, se negati, mostrano un avviso con l'azione "Impostazioni".
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Se lo scatto falliva, AttachedService restituiva null come per un
annullamento: il rilevatore toccava "Aggiungi una foto" e non succedeva
nulla.
- AttachedService: espone IsCameraAvailable (IsCaptureSupported) e, dopo
aver registrato l'errore e averlo inviato a Sentry, lo rilancia invece di
restituire null.
- ModalFormScheda: dalla scheda il pulsante apre solo la fotocamera, quindi
senza fotocamera non c'era alternativa. Ora avvisa e apre la galleria;
se lo scatto fallisce mostra un errore.
- ModalAddAttached: stessa gestione dell'errore di scatto.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Le foto venivano zippate tutte in un unico allegato: oltre i 100 MB i servizi
rifiutavano l'invio (MaxUploadSizeExceededException) e, costruendo tutto in RAM
sul thread della UI, il dispositivo si bloccava.
- Invio diviso in più email da massimo ~40 MB ciascuna
- Zip scritti su disco una parte alla volta e caricati in streaming
- Preparazione in background, avanzamento "parte X di N"
- Richiesta se includere le foto, con il loro peso (default: solo i log)
- Database inviato insieme al file -wal
- Avviso subito se si è offline
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>