xOnTakeXMedia_handling method

Future xOnTakeXMedia_handling(
  1. Uint8List file,
  2. bool isBusy,
  3. void setState(
    1. void ()
    ),
  4. XFDataItem xfDataItem,
  5. int mediatype,
)

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(),
  final xFile = File("${XLibStorage.filePath}/XMEDIAs/${xclMedia.id}_.${extForMediaType(xclMedia.mediaType!)}"); // _ è il marker per DONE !
  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;
  xclMedia.xDocType = xfDataItem.X_docXObjectName;
  setState(() => liMediaRAW.add(xclMedia));
}