From 59c5df2a1bf5a06bfe75f160a49172726be09c92 Mon Sep 17 00:00:00 2001 From: Dat Dang Date: Thu, 28 Nov 2024 17:46:01 +0700 Subject: [PATCH] TF-3264 Fix composer drag drop all modes (#3279) --- .../composer/presentation/composer_controller.dart | 8 ++++++++ lib/features/composer/presentation/composer_view_web.dart | 3 +++ .../composer/presentation/view/web/web_editor_view.dart | 8 ++++++++ .../presentation/widgets/web/web_editor_widget.dart | 4 ++++ 4 files changed, 23 insertions(+) diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index fa7fce98b..dd34e32b2 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -237,6 +237,7 @@ class ComposerController extends BaseController void onInit() { super.onInit(); if (PlatformInfo.isWeb) { + responsiveContainerKey = GlobalKey(); richTextWebController = getBinding(); responsiveContainerKey = GlobalKey(); menuMoreOptionController = CustomPopupMenuController(); @@ -286,6 +287,7 @@ class ComposerController extends BaseController richTextMobileTabletController = null; } _identityContentOnOpenPolicy = SignatureStatus.editedAvailable; + responsiveContainerKey = null; super.onClose(); } @@ -2246,6 +2248,12 @@ class ComposerController extends BaseController } } + void handleOnDragOverHtmlEditorWeb(List? types) { + if (types.validateFilesTransfer) { + mailboxDashBoardController.localFileDraggableAppState.value = DraggableAppState.active; + } + } + void onLocalFileDropZoneListener({ required BuildContext context, required DropDoneDetails details, diff --git a/lib/features/composer/presentation/composer_view_web.dart b/lib/features/composer/presentation/composer_view_web.dart index 85d7a02e8..a6be47119 100644 --- a/lib/features/composer/presentation/composer_view_web.dart +++ b/lib/features/composer/presentation/composer_view_web.dart @@ -198,6 +198,7 @@ class ComposerView extends GetWidget { onEditorTextSizeChanged: controller.richTextWebController!.onEditorTextSizeChanged, height: constraints.maxHeight, onDragEnter: controller.handleOnDragEnterHtmlEditorWeb, + onDragOver: controller.handleOnDragOverHtmlEditorWeb, onPasteImageSuccessAction: (listFileUpload) => controller.handleOnPasteImageSuccessAction( context: context, maxWidth: constraintsEditor.maxWidth, @@ -460,6 +461,7 @@ class ComposerView extends GetWidget { onEditorTextSizeChanged: controller.richTextWebController?.onEditorTextSizeChanged, height: constraints.maxHeight, onDragEnter: controller.handleOnDragEnterHtmlEditorWeb, + onDragOver: controller.handleOnDragOverHtmlEditorWeb, onPasteImageSuccessAction: (listFileUpload) => controller.handleOnPasteImageSuccessAction( context: context, maxWidth: constraintsEditor.maxWidth, @@ -744,6 +746,7 @@ class ComposerView extends GetWidget { onEditorTextSizeChanged: controller.richTextWebController!.onEditorTextSizeChanged, height: constraints.maxHeight, onDragEnter: controller.handleOnDragEnterHtmlEditorWeb, + onDragOver: controller.handleOnDragOverHtmlEditorWeb, onPasteImageSuccessAction: (listFileUpload) => controller.handleOnPasteImageSuccessAction( context: context, maxWidth: constraintsBody.maxWidth, diff --git a/lib/features/composer/presentation/view/web/web_editor_view.dart b/lib/features/composer/presentation/view/web/web_editor_view.dart index 552dae984..22d7e77f2 100644 --- a/lib/features/composer/presentation/view/web/web_editor_view.dart +++ b/lib/features/composer/presentation/view/web/web_editor_view.dart @@ -31,6 +31,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { final OnEditorTextSizeChanged? onEditorTextSizeChanged; final double? height; final OnDragEnterListener? onDragEnter; + final OnDragOverListener? onDragOver; final OnPasteImageSuccessAction? onPasteImageSuccessAction; final OnPasteImageFailureAction? onPasteImageFailureAction; final OnInitialContentLoadComplete? onInitialContentLoadComplete; @@ -50,6 +51,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { this.onEditorTextSizeChanged, this.height, this.onDragEnter, + this.onDragOver, this.onPasteImageSuccessAction, this.onPasteImageFailureAction, this.onInitialContentLoadComplete, @@ -78,6 +80,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { onEditorTextSizeChanged: onEditorTextSizeChanged, height: height, onDragEnter: onDragEnter, + onDragOver: onDragOver, onPasteImageSuccessAction: onPasteImageSuccessAction, onPasteImageFailureAction: onPasteImageFailureAction, onInitialContentLoadComplete: onInitialContentLoadComplete, @@ -106,6 +109,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { onEditorTextSizeChanged: onEditorTextSizeChanged, height: height, onDragEnter: onDragEnter, + onDragOver: onDragOver, onPasteImageSuccessAction: onPasteImageSuccessAction, onPasteImageFailureAction: onPasteImageFailureAction, onInitialContentLoadComplete: onInitialContentLoadComplete, @@ -133,6 +137,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { onEditorTextSizeChanged: onEditorTextSizeChanged, height: height, onDragEnter: onDragEnter, + onDragOver: onDragOver, onPasteImageSuccessAction: onPasteImageSuccessAction, onPasteImageFailureAction: onPasteImageFailureAction, onInitialContentLoadComplete: onInitialContentLoadComplete, @@ -169,6 +174,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { onEditorTextSizeChanged: onEditorTextSizeChanged, height: height, onDragEnter: onDragEnter, + onDragOver: onDragOver, onPasteImageSuccessAction: onPasteImageSuccessAction, onPasteImageFailureAction: onPasteImageFailureAction, onInitialContentLoadComplete: onInitialContentLoadComplete, @@ -200,6 +206,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { onEditorTextSizeChanged: onEditorTextSizeChanged, height: height, onDragEnter: onDragEnter, + onDragOver: onDragOver, onPasteImageSuccessAction: onPasteImageSuccessAction, onPasteImageFailureAction: onPasteImageFailureAction, onInitialContentLoadComplete: onInitialContentLoadComplete, @@ -221,6 +228,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin { onEditorTextSizeChanged: onEditorTextSizeChanged, height: height, onDragEnter: onDragEnter, + onDragOver: onDragOver, onPasteImageSuccessAction: onPasteImageSuccessAction, onPasteImageFailureAction: onPasteImageFailureAction, onInitialContentLoadComplete: onInitialContentLoadComplete, diff --git a/lib/features/composer/presentation/widgets/web/web_editor_widget.dart b/lib/features/composer/presentation/widgets/web/web_editor_widget.dart index 2134e6348..bf73d7c0e 100644 --- a/lib/features/composer/presentation/widgets/web/web_editor_widget.dart +++ b/lib/features/composer/presentation/widgets/web/web_editor_widget.dart @@ -13,6 +13,7 @@ typedef OnMouseDownEditorAction = Function(); typedef OnEditorSettingsChange = Function(EditorSettings settings); typedef OnEditorTextSizeChanged = Function(int? size); typedef OnDragEnterListener = Function(List? types); +typedef OnDragOverListener = Function(List? types); typedef OnPasteImageSuccessAction = Function(List listFileUpload); typedef OnPasteImageFailureAction = Function( List? listFileUpload, @@ -34,6 +35,7 @@ class WebEditorWidget extends StatefulWidget { final OnEditorTextSizeChanged? onEditorTextSizeChanged; final double? height; final OnDragEnterListener? onDragEnter; + final OnDragOverListener? onDragOver; final OnPasteImageSuccessAction? onPasteImageSuccessAction; final OnPasteImageFailureAction? onPasteImageFailureAction; final OnInitialContentLoadComplete? onInitialContentLoadComplete; @@ -52,6 +54,7 @@ class WebEditorWidget extends StatefulWidget { this.onEditorTextSizeChanged, this.height, this.onDragEnter, + this.onDragOver, this.onPasteImageSuccessAction, this.onPasteImageFailureAction, this.onInitialContentLoadComplete, @@ -160,6 +163,7 @@ class _WebEditorState extends State { HtmlUtils.lineHeight100Percent.name ), onDragEnter: widget.onDragEnter, + onDragOver: widget.onDragOver, onDragLeave: (_) {}, onImageUpload: widget.onPasteImageSuccessAction, onImageUploadError: widget.onPasteImageFailureAction,