TF-4050 Preview and download uploaded file in composer on web
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:model/email/attachment.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:tmail_ui_user/features/download/domain/model/download_source_view.dart';
|
||||
import 'package:tmail_ui_user/features/download/presentation/extensions/download_attachment_download_controller_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
|
||||
extension HandleDownloadAttachmentExtension on MailboxDashBoardController {
|
||||
void downloadMessageAsEML({
|
||||
required PresentationEmail presentationEmail,
|
||||
bool showBottomDownloadProgressBar = false,
|
||||
}) =>
|
||||
downloadController.downloadMessageAsEML(
|
||||
presentationEmail: presentationEmail,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
showBottomDownloadProgressBar: showBottomDownloadProgressBar,
|
||||
);
|
||||
|
||||
void downloadAttachment({
|
||||
required Attachment attachment,
|
||||
bool previewerSupported = false,
|
||||
bool showBottomDownloadProgressBar = false,
|
||||
DownloadSourceView? sourceView,
|
||||
}) =>
|
||||
downloadController.downloadAttachment(
|
||||
attachment: attachment,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
previewerSupported: previewerSupported,
|
||||
showBottomDownloadProgressBar: showBottomDownloadProgressBar,
|
||||
sourceView: sourceView,
|
||||
);
|
||||
|
||||
void downloadAllAttachments({
|
||||
required String outputFileName,
|
||||
required EmailId? emailId,
|
||||
bool showBottomDownloadProgressBar = false,
|
||||
}) =>
|
||||
downloadController.downloadAllAttachments(
|
||||
outputFileName: outputFileName,
|
||||
emailId: emailId,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
showBottomDownloadProgressBar: showBottomDownloadProgressBar,
|
||||
);
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
import 'package:model/email/attachment.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
|
||||
extension HandleDownloadExtension on MailboxDashBoardController {
|
||||
void downloadMessageAsEML(PresentationEmail presentationEmail) {
|
||||
downloadController.downloadMessageAsEML(
|
||||
presentationEmail: presentationEmail,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
);
|
||||
}
|
||||
|
||||
void downloadAttachmentForWeb({
|
||||
required Attachment attachment,
|
||||
bool previewerSupported = false,
|
||||
}) {
|
||||
downloadController.downloadAttachmentForWeb(
|
||||
attachment: attachment,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
previewerSupported: previewerSupported,
|
||||
);
|
||||
}
|
||||
|
||||
void downloadAllAttachmentsForWeb({
|
||||
required String outputFileName,
|
||||
PresentationEmail? currentEmail,
|
||||
}) {
|
||||
downloadController.downloadAllAttachmentsForWeb(
|
||||
outputFileName: outputFileName,
|
||||
currentEmail: currentEmail,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
);
|
||||
}
|
||||
}
|
||||
+40
-27
@@ -2,48 +2,53 @@ import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:model/email/attachment.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/mixin/preview_attachment_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/download/domain/model/download_source_view.dart';
|
||||
import 'package:tmail_ui_user/features/download/presentation/extensions/download_attachment_download_controller_extension.dart';
|
||||
import 'package:tmail_ui_user/features/download/presentation/extensions/preview_attachment_download_controller_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/eml_previewer.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_item_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_download_attachment_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
|
||||
import 'package:tmail_ui_user/features/upload/presentation/model/upload_file_state.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
|
||||
extension HandlePreviewAttachmentExtension on MailboxDashBoardController {
|
||||
void previewAttachmentAction({
|
||||
void previewAttachment({
|
||||
required BuildContext context,
|
||||
required Attachment attachment,
|
||||
required OnDownloadAttachmentAction onDownloadAttachment,
|
||||
required OnPreviewOrDownloadAttachmentAction onPreviewOrDownloadAction,
|
||||
bool isDialogLoadingVisible = false,
|
||||
DownloadSourceView? sourceView,
|
||||
}) =>
|
||||
downloadController.previewAttachmentAction(
|
||||
downloadController.previewAttachment(
|
||||
context: context,
|
||||
attachment: attachment,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
ownEmailAddress: ownEmailAddress.value,
|
||||
controller: downloadController,
|
||||
parseEmailInteractor: downloadController.parseEmailByBlobIdInteractor,
|
||||
getHtmlInteractor:
|
||||
downloadController.getHtmlContentFromAttachmentInteractor,
|
||||
onDownloadAttachment: onDownloadAttachment,
|
||||
sourceView: sourceView,
|
||||
onPreviewOrDownloadAction: onPreviewOrDownloadAction,
|
||||
isDialogLoadingVisible: isDialogLoadingVisible,
|
||||
);
|
||||
|
||||
void previewEMLFileAction({
|
||||
required AppLocalizations appLocalizations,
|
||||
required Id? blobId,
|
||||
void previewUploadFile({
|
||||
required BuildContext context,
|
||||
required UploadFileState uploadFile,
|
||||
required OnPreviewOrDownloadAttachmentAction onPreviewOrDownloadAction,
|
||||
bool isDialogLoadingVisible = false,
|
||||
}) =>
|
||||
downloadController.previewEMLFileAction(
|
||||
appLocalizations: appLocalizations,
|
||||
downloadController.previewUploadFile(
|
||||
context: context,
|
||||
uploadFile: uploadFile,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
ownEmailAddress: ownEmailAddress.value,
|
||||
blobId: blobId,
|
||||
controller: downloadController,
|
||||
parseEmailByBlobIdInteractor:
|
||||
downloadController.parseEmailByBlobIdInteractor,
|
||||
onPreviewOrDownloadAction: onPreviewOrDownloadAction,
|
||||
isDialogLoadingVisible: isDialogLoadingVisible,
|
||||
);
|
||||
|
||||
void showDialogToPreviewEMLAttachment({
|
||||
@@ -51,24 +56,32 @@ extension HandlePreviewAttachmentExtension on MailboxDashBoardController {
|
||||
required EMLPreviewer emlPreviewer,
|
||||
required ImagePaths imagePaths,
|
||||
required OnMailtoDelegateAction onMailtoAction,
|
||||
required OnDownloadAttachmentDelegateAction onDownloadAction,
|
||||
required OnPreviewEMLDelegateAction onPreviewAction,
|
||||
required OnDownloadAttachmentFileAction onDownloadFileAction,
|
||||
}) =>
|
||||
downloadController.showDialogToPreviewEMLAttachment(
|
||||
context: context,
|
||||
emlPreviewer: emlPreviewer,
|
||||
imagePaths: imagePaths,
|
||||
onMailtoAction: onMailtoAction,
|
||||
onDownloadAction: onDownloadAction,
|
||||
onPreviewAction: onPreviewAction,
|
||||
onPreviewAction: (uri) => downloadController.openEMLPreviewer(
|
||||
appLocalizations: AppLocalizations.of(context),
|
||||
uri: uri,
|
||||
accountId: accountId.value,
|
||||
session: sessionCurrent,
|
||||
ownEmailAddress: ownEmailAddress.value,
|
||||
),
|
||||
onDownloadAction: (uri) async => downloadController.downloadAttachmentInEMLPreview(
|
||||
uri: uri,
|
||||
onDownloadAction: (attachment) => downloadAttachment(
|
||||
attachment: attachment,
|
||||
)
|
||||
),
|
||||
);
|
||||
|
||||
Future<void> openMailToLink(Uri? uri) async {
|
||||
if (uri == null) return;
|
||||
void openComposerFromMailToLink(Uri uri) {
|
||||
final navigationRouter = RouteUtils.generateNavigationRouterFromMailtoLink(
|
||||
uri.toString(),
|
||||
);
|
||||
log('$runtimeType::openMailToLink(): ${uri.toString()}');
|
||||
log('$runtimeType::openComposerFromMailToLink(): ${uri.toString()}');
|
||||
if (!RouteUtils.canOpenComposerFromNavigationRouter(navigationRouter)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user