From be0f20b2cd23d7fe91004985ce63f1d8071f99a3 Mon Sep 17 00:00:00 2001 From: ManhNTX Date: Wed, 5 Oct 2022 07:11:22 +0700 Subject: [PATCH] TF-523: open composer and open file --- .../presentation/composer_controller.dart | 73 ++++++++++++++----- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 8a76df2c7..8ed678d22 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -950,41 +950,74 @@ class ComposerController extends BaseController { } } - List covertListSharedMediaFileToFile(List value) { + File _covertSharedMediaFileToFile(SharedMediaFile sharedMediaFile) { + return File( + Platform.isIOS + ? sharedMediaFile.type == SharedMediaType.FILE + ? sharedMediaFile.path.toString().replaceAll('file:/', '') + : sharedMediaFile.path + : sharedMediaFile.path, + ); + } + + FileInfo _covertFileToFileInfo(File file) { + return FileInfo( + file.path.split('/').last, + file.path, + file.existsSync() ? file.lengthSync() : 0, + ); + } + + List covertListSharedMediaFileToInlineImage(List value) { List newFiles = List.empty(growable: true); if (value.isNotEmpty) { for (var element in value) { - newFiles.add(File( - Platform.isIOS - ? element.type == SharedMediaType.FILE - ? element.path.toString().replaceAll('file:/', '') - : element.path - : element.path, - )); + newFiles.add(_covertSharedMediaFileToFile(element)); } } final List listInlineImage = newFiles.map( (e) => InlineImage( - ImageSource.local, - fileInfo: FileInfo( - e.path.split('/').last, - e.path, - e.existsSync() ? e.lengthSync() : 0, - ) + ImageSource.local, + fileInfo: _covertFileToFileInfo(e), ) ).toList(); return listInlineImage; } - void _getEmailContentAction(ComposerArguments arguments) async { - if(arguments.listSharedMediaFile != null && arguments.listSharedMediaFile!.isNotEmpty){ - final listInlineImage = covertListSharedMediaFileToFile(arguments.listSharedMediaFile!); - for (var e in listInlineImage) { - _uploadInlineAttachmentsAction(e.fileInfo!); + List covertListSharedMediaFileToFileInfo(List value) { + List newFiles = List.empty(growable: true); + if (value.isNotEmpty) { + for (var element in value) { + newFiles.add(_covertSharedMediaFileToFile(element)); } } - if(arguments.emailContents != null && arguments.emailContents!.isNotEmpty){ + + final List listFileInfo = newFiles.map( + (e) => _covertFileToFileInfo(e), + ).toList(); + return listFileInfo; + } + + void _getEmailContentAction(ComposerArguments arguments) async { + + final listSharedMediaFile = arguments.listSharedMediaFile; + if(listSharedMediaFile != null && listSharedMediaFile.isNotEmpty) { + final listImageSharedMediaFile = listSharedMediaFile.where((element) => element.type == SharedMediaType.IMAGE); + final listFileAttachmentSharedMediaFile = listSharedMediaFile.where((element) => element.type != SharedMediaType.IMAGE); + if (listImageSharedMediaFile.isNotEmpty) { + final listInlineImage = covertListSharedMediaFileToInlineImage(arguments.listSharedMediaFile!); + for (var e in listInlineImage) { + _uploadInlineAttachmentsAction(e.fileInfo!); + } + } + if (listFileAttachmentSharedMediaFile.isNotEmpty) { + final listFile = covertListSharedMediaFileToFileInfo(arguments.listSharedMediaFile!); + _uploadAttachmentsAction(listFile); + } + } + + if(arguments.emailContents != null && arguments.emailContents!.isNotEmpty) { _emailContents = arguments.emailContents; emailContentsViewState.value = Right(GetEmailContentSuccess(_emailContents!,[],[])); } else {