TF-2644 Handle total size exceeded maximum size when drag & drop multiple file to composer

This commit is contained in:
dab246
2024-03-01 17:09:09 +07:00
committed by Dat H. Pham
parent d646a5b9e4
commit 145a49d728
54 changed files with 1140 additions and 800 deletions
@@ -3,5 +3,15 @@ import 'package:model/upload/file_info.dart';
import 'package:tmail_ui_user/features/upload/domain/model/mobile_file_upload.dart';
extension FileInfoExtension on FileInfo {
MobileFileUpload toMobileFileUpload() => MobileFileUpload(fileName, filePath, fileSize, mimeType);
MobileFileUpload toMobileFileUpload() => MobileFileUpload(fileName, filePath!, fileSize, mimeType);
FileInfo withInline() => FileInfo(
fileName: fileName,
fileSize: fileSize,
filePath: filePath,
bytes: bytes,
readStream: readStream,
type: type,
isInline: true,
isShared: isShared);
}
@@ -3,5 +3,5 @@ import 'package:model/upload/file_info.dart';
extension ListFileInfoExtension on List<FileInfo> {
List<int> get listSize => map((file) => file.fileSize).toList();
num get totalSize => listSize.reduce((sum, size) => sum + size);
num get totalSize => listSize.isEmpty ? 0 : listSize.reduce((sum, size) => sum + size);
}
@@ -0,0 +1,28 @@
import 'package:core/domain/extensions/media_type_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:http_parser/http_parser.dart';
extension MediaTypeExtension on MediaType {
String getIcon(ImagePaths imagePaths, {String? fileName}) {
if (validatePDFIcon(fileName: fileName) == true) {
return imagePaths.icFilePdf;
} else if (isDocFile()) {
return imagePaths.icFileDocx;
} else if (isExcelFile()) {
return imagePaths.icFileXlsx;
} else if (isPowerPointFile()) {
return imagePaths.icFilePptx;
} else if (isPdfFile()) {
return imagePaths.icFilePdf;
} else if (isZipFile()) {
return imagePaths.icFileZip;
} else if (isImageFile()) {
return imagePaths.icFilePng;
} else {
return imagePaths.icFileEPup;
}
}
bool validatePDFIcon({required String? fileName}) => mimeType == 'application/pdf' ||
(mimeType == 'application/octet-stream' && fileName?.endsWith('.pdf') == true);
}
@@ -0,0 +1,13 @@
import 'package:core/utils/platform_info.dart';
import 'package:file_picker/file_picker.dart';
import 'package:model/upload/file_info.dart';
extension PlatformFileExtension on PlatformFile {
FileInfo toFileInfo() => FileInfo(
fileName: name,
fileSize: size,
filePath: PlatformInfo.isWeb ? '' : path ?? '',
bytes: bytes,
readStream: readStream
);
}