From 949b2ed8ed6a3c943f53e30ac70ccd8bb8617a5e Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 2 Oct 2023 15:27:22 +0700 Subject: [PATCH] TF-2172 Handle add attachment from drop zone (cherry picked from commit a9c2b8d7a187e0149ca078cd55d5ce0e09964b52) --- .../presentation/composer_controller.dart | 5 +++++ .../composer/presentation/composer_view_web.dart | 1 + .../widgets/web/drop_zone_widget.dart | 15 ++++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 47eda8425..f19a10e40 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -2022,4 +2022,9 @@ class ComposerController extends BaseController { _updateStatusEmailSendButton(); } + + void addAttachmentFromDropZone(Attachment attachment) { + log('ComposerController::addAttachmentFromDropZone: $attachment'); + uploadController.initializeUploadAttachments([attachment]); + } } \ No newline at end of file diff --git a/lib/features/composer/presentation/composer_view_web.dart b/lib/features/composer/presentation/composer_view_web.dart index df62bc5d4..2fbdb5851 100644 --- a/lib/features/composer/presentation/composer_view_web.dart +++ b/lib/features/composer/presentation/composer_view_web.dart @@ -369,6 +369,7 @@ class ComposerView extends GetWidget { child: DropZoneWidget( width: constraints.maxWidth, height: constraints.maxHeight, + addAttachmentFromDropZone: controller.addAttachmentFromDropZone, ) ) ], diff --git a/lib/features/composer/presentation/widgets/web/drop_zone_widget.dart b/lib/features/composer/presentation/widgets/web/drop_zone_widget.dart index 58b908323..6391feb45 100644 --- a/lib/features/composer/presentation/widgets/web/drop_zone_widget.dart +++ b/lib/features/composer/presentation/widgets/web/drop_zone_widget.dart @@ -1,6 +1,5 @@ import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/utils/app_logger.dart'; import 'package:dotted_border/dotted_border.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -9,12 +8,20 @@ import 'package:model/email/attachment.dart'; import 'package:tmail_ui_user/features/composer/presentation/styles/web/drop_zone_widget_style.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; +typedef OnAddAttachmentFromDropZone = Function(Attachment attachment); + class DropZoneWidget extends StatefulWidget { final double? width; final double? height; + final OnAddAttachmentFromDropZone? addAttachmentFromDropZone; - const DropZoneWidget({super.key, this.width, this.height}); + const DropZoneWidget({ + super.key, + this.width, + this.height, + this.addAttachmentFromDropZone + }); @override State createState() => _DropZoneWidgetState(); @@ -69,9 +76,7 @@ class _DropZoneWidgetState extends State { return SizedBox(width: widget.width, height: widget.height); } }, - onAccept: (attachment) { - log('_DropZoneWidgetState::build:onAccept: $attachment'); - }, + onAccept: widget.addAttachmentFromDropZone, onLeave: (attachment) { if (_isDragging) { setState(() => _isDragging = false);