xOnTakeXMedia_handling method
Evento che gestisce il salvataggio di un media e la generazione della sua Thumbnail
Implementation
Future xOnTakeXMedia_handling(Uint8List file, bool isBusy, void Function(void Function()) setState, XFDataItem xfDataItem, int mediatype) async {
setState(() => isBusy = false);
var bytesForPayLoad = await file;
var t = XMediaItem(Uuid().v4(), xDocID: xfDataItem.id, mediaType: mediatype, payload: bytesForPayLoad, isNew: true);
var x = await xOnBefore_TakeXMedia(t, xfDataItem);
var xclMedia = x;
// per ora non lo mettiamo visto che sendDataBack lo prende dal loaclPATH e lo mette lui lì
// payload: await file.readAsBytes(),
if (kIsWeb) {
// if (mediatype == XEnums.mediaType.video.value)
// xclMedia.miniatura = await xCreateThumbnail_FromVideo(xFile.path);
// else
if (mediatype == XEnums.mediaType.image.value) {
var image = img.decodeJpg(xclMedia.payload!)!;
if (image.width > image.height) xclMedia.payload = await _rotateImageFromBytes(xclMedia.payload!);
xclMedia.miniatura = await xCreateThumbnails_fromImage(bytesForPayLoad);
}
xclMedia.localURI = "${XLibStorage.filePath}/XMEDIAs/${xclMedia.id}_.${extForMediaType(xclMedia.mediaType!)}";
} else {
final xFile = File("${XLibStorage.filePath}/XMEDIAs/${xclMedia.id}_.${extForMediaType(xclMedia.mediaType!)}"); // _ è il marker per DONE !
xclMedia.blobURL = xFile.path;
await xFile.create(recursive: true).then((value) async => await xFile.writeAsBytes(bytesForPayLoad)).whenComplete(() async {
if (mediatype == XEnums.mediaType.video.value)
xclMedia.miniatura = await xCreateThumbnail_FromVideo(xFile.path);
else if (mediatype == XEnums.mediaType.image.value) {
var image = img.decodeJpg(xclMedia.payload!)!;
if (image.width > image.height) xclMedia.payload = await _rotateImageFromBytes(xclMedia.payload!);
xclMedia.miniatura = await xCreateThumbnails_fromImage(bytesForPayLoad);
}
});
xclMedia.localURI = xFile.path;
}
// if(){}
widget.edited!.value = true;
changed_Data = true;
xclMedia.xDocType = xfDataItem.X_docXObjectName;
liEditedItems.add(xfDataItem as K);
setState(() => liMediaRAW.add(xclMedia));
}