xMedia_OnTake_Handling method
Override per la Gestione degli XMedia prima che vengano Salvati permanentemente sia su Disco che Blob
Implementation
Future xMedia_OnTake_Handling(Uint8List file, bool isBusy, void Function(void Function()) setState, XFDataItem xfDataItem, int mediatype) async {
setState(() => isBusy = false);
var bytesForPayLoad = await file;
//Preparo un XMediaItem con i legami e tipo di XMedia
var t = XMediaItem(Uuid().v4(), xDocID: xfDataItem.id, mediaType: mediatype, payload: bytesForPayLoad, isNew: true);
//Esegui se c'è una BL che puo essere aggiunta
var x = await xMedia_OnBeforeTake(t, xfDataItem);
var xclMedia = x;
//Prendo il File
final xFile = File("${XLibStorage.filePath}/XMEDIAs/${xclMedia.id}_.${extForMediaType(xclMedia.mediaType!)}"); // _ è il marker per DONE !
t.blobURL = xFile.path;
//lo creo e poi faccio la miniatura
await xFile.create(recursive: true).then((value) async => await xFile.writeAsBytes(bytesForPayLoad)).whenComplete(() async {
if (mediatype == XEnums.mediaType.video.value) {
xclMedia.miniatura = await xCreateThumbnails_FromVideoURL(xFile.path);
} else if (mediatype == XEnums.mediaType.image.value) {
xclMedia.miniatura = await xCreateThumbnails_FromImage(bytesForPayLoad);
}
});
xclMedia.localURI = xFile.path;
xclMedia.xDocType = xfDataItem.X_docXObjectName;
//Infine lo aggiungo alla lista di XMedia della Scheda
setState(() => liMediaRAW.add(xclMedia));
}