createThumbnailUploadPdfData method

Future<T> createThumbnailUploadPdfData(
  1. String memberMediumDocumentID,
  2. Uint8List fileData,
  3. String baseName,
  4. String documentID, {
  5. PdfAvailable? feedbackFunction,
  6. FeedbackProgress? feedbackProgress,
})

Implementation

Future<T> createThumbnailUploadPdfData(String memberMediumDocumentID,
    Uint8List fileData, String baseName, String documentID,
    {PdfAvailable? feedbackFunction,
    FeedbackProgress? feedbackProgress}) async {
  print('createThumbnailUploadPdfData');
  // First, upload the file
  final document = await PdfDocument.openData(fileData);
  final pageCount = document.pagesCount;
  var taskCounter = 1;
  var totalTasks = 1 + (pageCount * 4);

  // Now create extra MemberImageModels for each page
  dynamic previousMediumId;
  String newDocumentID;
  T? returnMe;
  for (var i = pageCount; i >= 1; i--) {
    newDocumentID = '$documentID-$i';
    var newBaseName = '$baseName-$i';

    // First, create the image and thumbnail
    var pageData = await MediumData.createPhotoWithThumbnailFromPdfData(
        fileData, newBaseName, i);
    taskCounter++;
    _feedBackAggregatedProgress(taskCounter, totalTasks, 1,
        feedbackProgress: feedbackProgress);

    // Second, upload the thumbnail;
    taskCounter++;
    var pageThumbnail = await UploadInfo.uploadData(
        pageData.thumbNailData.baseName,
        pageData.thumbNailData.data,
        app.documentID,
        ownerId,
        packageName,
        readAccessCustomMetaData(),
        feedbackProgress: (progress) => _feedBackAggregatedProgress(
            taskCounter, totalTasks, progress,
            feedbackProgress: feedbackProgress));

    // Third, upload the image
    taskCounter++;
    var pageImage = await UploadInfo.uploadData(
        pageData.photoData.baseName,
        pageData.photoData.data,
        app.documentID,
        ownerId,
        packageName,
        readAccessCustomMetaData(),
        feedbackProgress: (progress) => _feedBackAggregatedProgress(
            taskCounter, totalTasks, progress,
            feedbackProgress: feedbackProgress));

    // Create the MediumModel representation
    var newMediumModel = await constructMediumModel(
        newDocumentID,
        newBaseName,
        pageImage,
        pageThumbnail,
        pageData,
        AbstractMediumType.photo,
        previousMediumId);
    returnMe = newMediumModel;

    previousMediumId = newDocumentID;
    taskCounter++;
    _feedBackAggregatedProgress(taskCounter, totalTasks, 1,
        feedbackProgress: feedbackProgress);
  }
  if (feedbackFunction != null) {
    feedbackFunction(returnMe);
  }
  if (returnMe != null) {
    return returnMe;
  } else {
    throw Exception("No page found");
  }
}