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(),

  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));
}