TF-4013 Unified UX between mobile and web

(cherry picked from commit 298afd1871aedc3549191b16796241aec9b4552d)
This commit is contained in:
dab246
2025-10-07 13:52:03 +07:00
committed by Dat H. Pham
parent 69d2e59f35
commit bfdd6af3f7
11 changed files with 335 additions and 506 deletions
@@ -4,7 +4,6 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/email/prefix_email_address.dart';
import 'package:model/mailbox/expand_mode.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_manager.dart';
import 'package:tmail_ui_user/features/base/widget/dialog_picker/color_dialog_picker.dart';
@@ -134,7 +133,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listToEmailAddress,
expandMode: controller.toAddressExpandMode.value,
textController: controller.toEmailAddressController,
focusNode: controller.toAddressFocusNode,
focusNodeKeyboard: controller.toAddressFocusNodeKeyboard,
@@ -149,7 +147,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listCcEmailAddress,
expandMode: controller.ccAddressExpandMode.value,
textController: controller.ccEmailAddressController,
focusNode: controller.ccAddressFocusNode,
focusNodeKeyboard: controller.ccAddressFocusNodeKeyboard,
@@ -164,7 +161,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listBccEmailAddress,
expandMode: controller.bccAddressExpandMode.value,
textController: controller.bccEmailAddressController,
focusNode: controller.bccAddressFocusNode,
focusNodeKeyboard: controller.bccAddressFocusNodeKeyboard,
@@ -179,7 +175,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listReplyToEmailAddress,
expandMode: controller.replyToAddressExpandMode.value,
textController: controller.replyToEmailAddressController,
focusNode: controller.replyToAddressFocusNode,
focusNodeKeyboard: controller.replyToAddressFocusNodeKeyboard,
@@ -215,7 +210,6 @@ class ComposerView extends GetWidget<ComposerController> {
onInitial: controller.handleInitHtmlEditorWeb,
onChangeContent: controller.onChangeTextEditorWeb,
onFocus: controller.handleOnFocusHtmlEditorWeb,
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
onEditorSettings: controller.richTextWebController!.onEditorSettingsChange,
onEditorTextSizeChanged: controller.richTextWebController!.onEditorTextSizeChanged,
height: constraintsEditor.maxHeight,
@@ -366,7 +360,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listToEmailAddress,
expandMode: controller.toAddressExpandMode.value,
textController: controller.toEmailAddressController,
focusNode: controller.toAddressFocusNode,
focusNodeKeyboard: controller.toAddressFocusNodeKeyboard,
@@ -380,7 +373,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listCcEmailAddress,
expandMode: controller.ccAddressExpandMode.value,
textController: controller.ccEmailAddressController,
focusNode: controller.ccAddressFocusNode,
focusNodeKeyboard: controller.ccAddressFocusNodeKeyboard,
@@ -394,7 +386,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listBccEmailAddress,
expandMode: controller.bccAddressExpandMode.value,
textController: controller.bccEmailAddressController,
focusNode: controller.bccAddressFocusNode,
focusNodeKeyboard: controller.bccAddressFocusNodeKeyboard,
@@ -408,7 +399,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listReplyToEmailAddress,
expandMode: controller.replyToAddressExpandMode.value,
textController: controller.replyToEmailAddressController,
focusNode: controller.replyToAddressFocusNode,
focusNodeKeyboard: controller.replyToAddressFocusNodeKeyboard,
@@ -457,7 +447,6 @@ class ComposerView extends GetWidget<ComposerController> {
onInitial: controller.handleInitHtmlEditorWeb,
onChangeContent: controller.onChangeTextEditorWeb,
onFocus: controller.handleOnFocusHtmlEditorWeb,
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
onEditorSettings: controller.richTextWebController?.onEditorSettingsChange,
onEditorTextSizeChanged: controller.richTextWebController?.onEditorTextSizeChanged,
height: constraintsEditor.maxHeight,
@@ -639,7 +628,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listToEmailAddress,
expandMode: controller.toAddressExpandMode.value,
textController: controller.toEmailAddressController,
focusNode: controller.toAddressFocusNode,
focusNodeKeyboard: controller.toAddressFocusNodeKeyboard,
@@ -653,7 +641,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listCcEmailAddress,
expandMode: controller.ccAddressExpandMode.value,
textController: controller.ccEmailAddressController,
focusNode: controller.ccAddressFocusNode,
focusNodeKeyboard: controller.ccAddressFocusNodeKeyboard,
@@ -667,7 +654,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listBccEmailAddress,
expandMode: controller.bccAddressExpandMode.value,
textController: controller.bccEmailAddressController,
focusNode: controller.bccAddressFocusNode,
focusNodeKeyboard: controller.bccAddressFocusNodeKeyboard,
@@ -681,7 +667,6 @@ class ComposerView extends GetWidget<ComposerController> {
controller: controller,
maxWidth: constraints.maxWidth,
listEmailAddress: controller.listReplyToEmailAddress,
expandMode: controller.replyToAddressExpandMode.value,
textController: controller.replyToEmailAddressController,
focusNode: controller.replyToAddressFocusNode,
focusNodeKeyboard: controller.replyToAddressFocusNodeKeyboard,
@@ -729,7 +714,6 @@ class ComposerView extends GetWidget<ComposerController> {
onInitial: controller.handleInitHtmlEditorWeb,
onChangeContent: controller.onChangeTextEditorWeb,
onFocus: controller.handleOnFocusHtmlEditorWeb,
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
onEditorSettings: controller.richTextWebController!.onEditorSettingsChange,
onEditorTextSizeChanged: controller.richTextWebController!.onEditorTextSizeChanged,
height: constraintsBody.maxHeight,
@@ -866,7 +850,6 @@ class ComposerView extends GetWidget<ComposerController> {
required ComposerController controller,
required double maxWidth,
required List<EmailAddress> listEmailAddress,
required ExpandMode expandMode,
required TextEditingController textController,
required FocusNode? focusNode,
required FocusNode? focusNodeKeyboard,
@@ -887,7 +870,6 @@ class ComposerView extends GetWidget<ComposerController> {
imagePaths: controller.imagePaths,
maxWidth: maxWidth,
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
expandMode: expandMode,
controller: textController,
focusNode: focusNode,
focusNodeKeyboard: focusNodeKeyboard,
@@ -901,16 +883,15 @@ class ComposerView extends GetWidget<ComposerController> {
? ComposerStyle.mobileRecipientMargin
: ComposerStyle.desktopRecipientMargin,
onFocusEmailAddressChangeAction: controller.onEmailAddressFocusChange,
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
onSuggestionEmailAddress: controller.getAutoCompleteSuggestion,
onFocusNextAddressAction: controller.handleFocusNextAddressAction,
onRemoveDraggableEmailAddressAction:
controller.removeDraggableEmailAddress,
onRemoveDraggableEmailAddressAction: controller.removeDraggableEmailAddress,
onEditRecipientAction: controller.onEditRecipient,
onClearFocusAction: controller.onClearFocusAction,
onAddEmailAddressTypeAction: controller.addEmailAddressType,
onDeleteEmailAddressTypeAction: controller.deleteEmailAddressType,
onEnableAllRecipientsInputAction: controller.handleEnableRecipientsInputAction,
));
}
}