From 5a79210dfc7c264861a10d4866c1506f535648a0 Mon Sep 17 00:00:00 2001 From: sherlock Date: Tue, 17 Oct 2023 13:43:51 +0700 Subject: [PATCH] feat/add factory method for FileInfo --- lib/src/utils/models/file_info.dart | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/src/utils/models/file_info.dart b/lib/src/utils/models/file_info.dart index 0383ead96..f5f1c0e6f 100644 --- a/lib/src/utils/models/file_info.dart +++ b/lib/src/utils/models/file_info.dart @@ -1,5 +1,8 @@ +import 'dart:typed_data'; + import 'package:equatable/equatable.dart'; +import 'package:matrix/matrix.dart'; import 'package:mime/mime.dart'; class FileInfo with EquatableMixin { @@ -23,6 +26,30 @@ class FileInfo with EquatableMixin { 'mimetype': mimeType, 'size': fileSize, }); + + + FileInfo fromMatrixFile(MatrixFile file) { + if (file.msgType == MessageTypes.Image) { + return ImageFileInfo( + fileName, + filePath, + fileSize, + width: file.info['w'], + height: file.info['h'], + ); + } else if (file.msgType == MessageTypes.Video) { + return VideoFileInfo( + fileName, + filePath, + fileSize, + imagePlaceholderBytes: file.bytes ?? Uint8List(0), + width: file.info['w'], + height: file.info['h'], + duration: file.info['duration'], + ); + } + return FileInfo(fileName, filePath, fileSize, readStream: readStream); + } @override List get props => [fileName, filePath, fileSize, readStream];