xMedia_OnTake_Handling method

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

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