getFileData method

  1. @override
Future<FileModel?> getFileData(
  1. String fileId, {
  2. String? bucketId,
})
override

Implementation

@override
Future<FileModel?> getFileData(String fileId, {String? bucketId}) async {
  try {
    await initialize();

    var file = _storage!.ref().child(fileId);
    FullMetadata fileMetadata = await file.getMetadata();
    String fileUrl = await file.getDownloadURL();

    String thumbnailId =
        "${file.fullPath.substring(0, file.fullPath.indexOf("/"))}/content/thumbnail/${file.name.substring(0, file.name.lastIndexOf("."))}.jpg";
    var thumbnail = _storage!.ref().child(thumbnailId);
    var thumbnailUrl = await thumbnail.getDownloadURL().onError((error, stackTrace) =>
        fileMetadata.contentType != null && fileMetadata.contentType!.contains("image")
            ? fileUrl
            : "");

    return FileModel(
        id: file.fullPath,
        name: file.name.length > 36 ? file.name.substring(32) : file.name,
        url: fileUrl,
        thumbnailUrl: thumbnailUrl,
        size: fileMetadata.size ?? 0,
        contentType: ContentsType.getContentTypes(fileMetadata.contentType ?? ""));
  } catch (error) {
    logger.info("error at Storage.getFileData >>> $error");
  }
  return null;
}