diff --git a/assets/images/ic_send_disable.svg b/assets/images/ic_send_disable.svg
index d2ce6d5d23..69097aeeb1 100644
--- a/assets/images/ic_send_disable.svg
+++ b/assets/images/ic_send_disable.svg
@@ -1,3 +1,3 @@
diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart
index 18743df6e7..a805c443f8 100644
--- a/lib/features/composer/presentation/composer_view.dart
+++ b/lib/features/composer/presentation/composer_view.dart
@@ -19,10 +19,10 @@ import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/app_
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/from_composer_mobile_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/mobile_attachment_composer_widget.dart';
+import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/tablet_app_bar_composer_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/mobile/tablet_bottom_bar_composer_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/recipient_composer_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/subject_composer_widget.dart';
-import 'package:tmail_ui_user/features/composer/presentation/widgets/web/desktop_app_bar_composer_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/from_composer_drop_down_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -36,18 +36,8 @@ class ComposerView extends GetWidget {
return ResponsiveWidget(
responsiveUtils: controller.responsiveUtils,
mobile: MobileContainerView(
- keyboardRichTextController: controller.richTextMobileTabletController!.richTextController,
onCloseViewAction: () => controller.handleClickCloseComposer(context),
onClearFocusAction: () => controller.clearFocus(context),
- onAttachFileAction: () => controller.isNetworkConnectionAvailable
- ? controller.openPickAttachmentMenu(
- context,
- _pickAttachmentsActionTiles(context)
- )
- : null,
- onInsertImageAction: (constraints) => controller.isNetworkConnectionAvailable
- ? controller.insertImage(context, constraints.maxWidth)
- : null,
backgroundColor: MobileAppBarComposerWidgetStyle.backgroundColor,
childBuilder: (context, constraints) => SafeArea(
left: !controller.responsiveUtils.isLandscapeMobile(context),
@@ -69,6 +59,17 @@ class ComposerView extends GetWidget {
radius: ComposerStyle.popupMenuRadius
);
},
+ isNetworkConnectionAvailable: controller.isNetworkConnectionAvailable,
+ attachFileAction: () => controller.openPickAttachmentMenu(
+ context,
+ _pickAttachmentsActionTiles(context)
+ ),
+ insertImageAction: () => controller.insertImage(context, constraints.maxWidth),
+ openRichToolbarAction: () =>
+ controller.richTextMobileTabletController?.showFormatStyleBottomSheet(
+ context: context,
+ richTextController: controller.richTextMobileTabletController?.richTextController
+ ),
))
else
Obx(() => AppBarComposerWidget(
@@ -83,6 +84,17 @@ class ComposerView extends GetWidget {
radius: ComposerStyle.popupMenuRadius
);
},
+ isNetworkConnectionAvailable: controller.isNetworkConnectionAvailable,
+ attachFileAction: () => controller.openPickAttachmentMenu(
+ context,
+ _pickAttachmentsActionTiles(context)
+ ),
+ insertImageAction: () => controller.insertImage(context, constraints.maxWidth),
+ openRichToolbarAction: () =>
+ controller.richTextMobileTabletController?.showFormatStyleBottomSheet(
+ context: context,
+ richTextController: controller.richTextMobileTabletController?.richTextController
+ ),
)),
Expanded(
child: SafeArea(
@@ -231,23 +243,20 @@ class ComposerView extends GetWidget {
keyboardRichTextController: controller.richTextMobileTabletController!.richTextController,
onCloseViewAction: () => controller.handleClickCloseComposer(context),
onClearFocusAction: () => controller.clearFocus(context),
- onAttachFileAction: () => controller.isNetworkConnectionAvailable
- ? controller.openPickAttachmentMenu(
- context,
- _pickAttachmentsActionTiles(context)
- )
- : null,
- onInsertImageAction: (constraints) => controller.isNetworkConnectionAvailable
- ? controller.insertImage(context, constraints.maxWidth)
- : null,
childBuilder: (context, constraints) => Container(
color: ComposerStyle.mobileBackgroundColor,
child: Column(
children: [
- Obx(() => DesktopAppBarComposerWidget(
+ Obx(() => TabletAppBarComposerWidget(
emailSubject: controller.subjectEmail.value ?? '',
onCloseViewAction: () => controller.handleClickCloseComposer(context),
constraints: constraints,
+ isNetworkConnectionAvailable: controller.isNetworkConnectionAvailable,
+ attachFileAction: () => controller.openPickAttachmentMenu(
+ context,
+ _pickAttachmentsActionTiles(context)
+ ),
+ insertImageAction: () => controller.insertImage(context, constraints.maxWidth),
)),
Expanded(
child: SingleChildScrollView(
diff --git a/lib/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart b/lib/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart
index ec887b5f1c..953cea15b7 100644
--- a/lib/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart
+++ b/lib/features/composer/presentation/controller/rich_text_mobile_tablet_controller.dart
@@ -1,12 +1,15 @@
import 'dart:io';
+import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/html/html_utils.dart';
import 'package:file_picker/file_picker.dart';
+import 'package:flutter/cupertino.dart';
import 'package:rich_text_composer/rich_text_composer.dart';
import 'package:tmail_ui_user/features/composer/presentation/controller/base_rich_text_controller.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/header_style_type.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/inline_image.dart';
+import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class RichTextMobileTabletController extends BaseRichTextController {
HtmlEditorApi? htmlEditorApi;
@@ -14,11 +17,13 @@ class RichTextMobileTabletController extends BaseRichTextController {
final RichTextController richTextController = RichTextController();
void insertImage(InlineImage inlineImage) async {
- if (inlineImage.fileInfo.isShared == true) {
- await htmlEditorApi?.moveCursorAtLastNode();
+ bool isEditorFocused = await htmlEditorApi?.hasFocus() ?? false;
+ log('RichTextMobileTabletController::insertImage: isEditorFocused = $isEditorFocused');
+ if (!isEditorFocused) {
+ await htmlEditorApi?.requestFocusLastChild();
}
if (inlineImage.base64Uri?.isNotEmpty == true) {
- await htmlEditorApi?.insertHtml(inlineImage.base64Uri!);
+ await htmlEditorApi?.insertHtml('${inlineImage.base64Uri ?? ''}
');
}
}
@@ -44,6 +49,28 @@ class RichTextMobileTabletController extends BaseRichTextController {
}
}
+ Future showFormatStyleBottomSheet({
+ required BuildContext context,
+ required RichTextController? richTextController
+ }) async {
+ if (Platform.isAndroid) {
+ await htmlEditorApi?.storeSelectionRange();
+ KeyboardUtils.hideSystemKeyboardMobile();
+ } else {
+ await htmlEditorApi?.unfocus();
+ }
+
+ if (context.mounted) {
+ richTextController?.showRichTextBottomSheet(
+ context: context,
+ titleFormatBottomSheet: AppLocalizations.of(context).titleFormat,
+ titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles,
+ titleForegroundBottomSheet: AppLocalizations.of(context).titleForeground,
+ titleBackgroundBottomSheet: AppLocalizations.of(context).titleBackground,
+ );
+ }
+ }
+
@override
void onClose() {
richTextController.dispose();
diff --git a/lib/features/composer/presentation/styles/mobile_app_bar_composer_widget_style.dart b/lib/features/composer/presentation/styles/mobile_app_bar_composer_widget_style.dart
index 9496250503..827574f819 100644
--- a/lib/features/composer/presentation/styles/mobile_app_bar_composer_widget_style.dart
+++ b/lib/features/composer/presentation/styles/mobile_app_bar_composer_widget_style.dart
@@ -5,9 +5,8 @@ import 'package:flutter/material.dart';
class MobileAppBarComposerWidgetStyle {
static const double height = 56;
static const double iconSize = 24;
- static const double space = 12;
- static const double iconRadius = 8;
- static const double sendButtonIconSize = 28;
+ static const double space = 4;
+ static const double sendButtonIconSize = 30;
static const double richTextIconSize = 28;
static const Color backgroundColor = AppColor.colorComposerAppBar;
@@ -17,5 +16,5 @@ class MobileAppBarComposerWidgetStyle {
static const EdgeInsetsGeometry padding = EdgeInsetsDirectional.symmetric(horizontal: 12);
static const EdgeInsetsGeometry iconPadding = EdgeInsetsDirectional.all(3);
- static const EdgeInsetsGeometry richTextIconPadding = EdgeInsetsDirectional.all(2);
+ static const EdgeInsetsGeometry richTextIconPadding = EdgeInsetsDirectional.all(5);
}
\ No newline at end of file
diff --git a/lib/features/composer/presentation/view/mobile/mobile_container_view.dart b/lib/features/composer/presentation/view/mobile/mobile_container_view.dart
index de1ffcd81c..5e67b80061 100644
--- a/lib/features/composer/presentation/view/mobile/mobile_container_view.dart
+++ b/lib/features/composer/presentation/view/mobile/mobile_container_view.dart
@@ -1,33 +1,18 @@
-import 'package:core/presentation/utils/responsive_utils.dart';
-import 'package:core/utils/app_logger.dart';
import 'package:flutter/material.dart';
-import 'package:get/get.dart';
-import 'package:rich_text_composer/rich_text_composer.dart' as rich_composer;
-import 'package:rich_text_composer/views/widgets/rich_text_keyboard_toolbar.dart';
+import 'package:core/utils/app_logger.dart';
import 'package:tmail_ui_user/features/composer/presentation/styles/mobile/mobile_container_view_style.dart';
-import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
-
-typedef OnInsertImageAction = Function(BoxConstraints constraints);
class MobileContainerView extends StatelessWidget {
final Widget Function(BuildContext context, BoxConstraints constraints) childBuilder;
- final rich_composer.RichTextController keyboardRichTextController;
final VoidCallback onCloseViewAction;
- final VoidCallback? onAttachFileAction;
- final OnInsertImageAction? onInsertImageAction;
final VoidCallback? onClearFocusAction;
final Color? backgroundColor;
- final _responsiveUtils = Get.find();
-
- MobileContainerView({
+ const MobileContainerView({
super.key,
required this.childBuilder,
- required this.keyboardRichTextController,
required this.onCloseViewAction,
- this.onAttachFileAction,
- this.onInsertImageAction,
this.onClearFocusAction,
this.backgroundColor,
});
@@ -48,25 +33,7 @@ class MobileContainerView extends StatelessWidget {
backgroundColor: backgroundColor ?? MobileContainerViewStyle.outSideBackgroundColor,
resizeToAvoidBottomInset: false,
body: LayoutBuilder(builder: (context, constraints) {
- return rich_composer.KeyboardRichText(
- richTextController: keyboardRichTextController,
- keyBroadToolbar: RichTextKeyboardToolBar(
- backgroundKeyboardToolBarColor: MobileContainerViewStyle.keyboardToolbarBackgroundColor,
- isLandScapeMode: _responsiveUtils.isLandscapeMobile(context),
- insertAttachment: onAttachFileAction,
- insertImage: () => onInsertImageAction != null
- ? onInsertImageAction!(constraints)
- : null,
- richTextController: keyboardRichTextController,
- titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles,
- titleBackgroundBottomSheet: AppLocalizations.of(context).titleBackground,
- titleForegroundBottomSheet: AppLocalizations.of(context).titleForeground,
- titleFormatBottomSheet: AppLocalizations.of(context).titleFormat,
- titleBack: AppLocalizations.of(context).format,
- ),
- paddingChild: EdgeInsets.zero,
- child: childBuilder(context, constraints),
- );
+ return childBuilder(context, constraints);
})
),
)
diff --git a/lib/features/composer/presentation/view/mobile/tablet_container_view.dart b/lib/features/composer/presentation/view/mobile/tablet_container_view.dart
index 9af4547939..511599fff5 100644
--- a/lib/features/composer/presentation/view/mobile/tablet_container_view.dart
+++ b/lib/features/composer/presentation/view/mobile/tablet_container_view.dart
@@ -5,9 +5,10 @@ import 'package:get/get.dart';
import 'package:rich_text_composer/rich_text_composer.dart';
import 'package:rich_text_composer/views/widgets/rich_text_keyboard_toolbar.dart';
import 'package:tmail_ui_user/features/composer/presentation/styles/mobile/tablet_container_view_style.dart';
-import 'package:tmail_ui_user/features/composer/presentation/view/mobile/mobile_container_view.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
+typedef OnInsertImageAction = Function(BoxConstraints constraints);
+
class TabletContainerView extends StatelessWidget {
final Widget Function(BuildContext context, BoxConstraints constraints) childBuilder;
@@ -50,8 +51,8 @@ class TabletContainerView extends StatelessWidget {
backgroundKeyboardToolBarColor: TabletContainerViewStyle.keyboardToolbarBackgroundColor,
isLandScapeMode: _responsiveUtils.isLandscapeMobile(context),
insertAttachment: onAttachFileAction,
- insertImage: () => onInsertImageAction != null
- ? onInsertImageAction!(constraints)
+ insertImage: onInsertImageAction != null
+ ? () => onInsertImageAction!(constraints)
: null,
richTextController: keyboardRichTextController,
titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles,
diff --git a/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart b/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart
index 2d174c4a05..0200424ec8 100644
--- a/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart
+++ b/lib/features/composer/presentation/widgets/mobile/app_bar_composer_widget.dart
@@ -9,8 +9,12 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class AppBarComposerWidget extends StatelessWidget {
final bool isSendButtonEnabled;
+ final bool isNetworkConnectionAvailable;
final VoidCallback onCloseViewAction;
final VoidCallback sendMessageAction;
+ final VoidCallback? attachFileAction;
+ final VoidCallback? insertImageAction;
+ final VoidCallback openRichToolbarAction;
final OnOpenContextMenuAction openContextMenuAction;
final _imagePaths = Get.find();
@@ -21,6 +25,10 @@ class AppBarComposerWidget extends StatelessWidget {
required this.onCloseViewAction,
required this.sendMessageAction,
required this.openContextMenuAction,
+ required this.openRichToolbarAction,
+ this.isNetworkConnectionAvailable = false,
+ this.attachFileAction,
+ this.insertImageAction,
});
@override
@@ -37,10 +45,40 @@ class AppBarComposerWidget extends StatelessWidget {
tooltipMessage: AppLocalizations.of(context).saveAndClose,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- padding: MobileAppBarComposerWidgetStyle.iconPadding,
onTapActionCallback: onCloseViewAction
),
const Spacer(),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icRichToolbar,
+ iconColor: MobileAppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: MobileAppBarComposerWidgetStyle.richTextIconSize,
+ padding: MobileAppBarComposerWidgetStyle.richTextIconPadding,
+ tooltipMessage: AppLocalizations.of(context).formattingOptions,
+ onTapActionCallback: openRichToolbarAction,
+ ),
+ if (isNetworkConnectionAvailable)
+ ...[
+ const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icAttachFile,
+ iconColor: MobileAppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: MobileAppBarComposerWidgetStyle.iconSize,
+ tooltipMessage: AppLocalizations.of(context).attach_file,
+ onTapActionCallback: attachFileAction,
+ ),
+ const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icInsertImage,
+ iconColor: MobileAppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: MobileAppBarComposerWidgetStyle.iconSize,
+ tooltipMessage: AppLocalizations.of(context).insertImage,
+ onTapActionCallback: insertImageAction,
+ ),
+ const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
+ ],
TMailButtonWidget.fromIcon(
icon: isSendButtonEnabled
? _imagePaths.icSendMobile
@@ -55,7 +93,6 @@ class AppBarComposerWidget extends StatelessWidget {
TMailButtonWidget.fromIcon(
icon: _imagePaths.icMore,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- borderRadius: MobileAppBarComposerWidgetStyle.iconRadius,
backgroundColor: Colors.transparent,
padding: MobileAppBarComposerWidgetStyle.iconPadding,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
diff --git a/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart b/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart
index 67e266f390..2d74fc0566 100644
--- a/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart
+++ b/lib/features/composer/presentation/widgets/mobile/landscape_app_bar_composer_widget.dart
@@ -9,8 +9,12 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class LandscapeAppBarComposerWidget extends StatelessWidget {
final bool isSendButtonEnabled;
+ final bool isNetworkConnectionAvailable;
final VoidCallback onCloseViewAction;
final VoidCallback sendMessageAction;
+ final VoidCallback? attachFileAction;
+ final VoidCallback? insertImageAction;
+ final VoidCallback openRichToolbarAction;
final OnOpenContextMenuAction openContextMenuAction;
final _imagePaths = Get.find();
@@ -21,6 +25,10 @@ class LandscapeAppBarComposerWidget extends StatelessWidget {
required this.onCloseViewAction,
required this.sendMessageAction,
required this.openContextMenuAction,
+ required this.openRichToolbarAction,
+ this.isNetworkConnectionAvailable = false,
+ this.attachFileAction,
+ this.insertImageAction,
});
@override
@@ -40,10 +48,40 @@ class LandscapeAppBarComposerWidget extends StatelessWidget {
tooltipMessage: AppLocalizations.of(context).saveAndClose,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- padding: MobileAppBarComposerWidgetStyle.iconPadding,
onTapActionCallback: onCloseViewAction
),
const Spacer(),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icRichToolbar,
+ iconColor: MobileAppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: MobileAppBarComposerWidgetStyle.richTextIconSize,
+ padding: MobileAppBarComposerWidgetStyle.richTextIconPadding,
+ tooltipMessage: AppLocalizations.of(context).formattingOptions,
+ onTapActionCallback: openRichToolbarAction,
+ ),
+ if (isNetworkConnectionAvailable)
+ ...[
+ const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icAttachFile,
+ iconColor: MobileAppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: MobileAppBarComposerWidgetStyle.iconSize,
+ tooltipMessage: AppLocalizations.of(context).attach_file,
+ onTapActionCallback: attachFileAction,
+ ),
+ const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icInsertImage,
+ iconColor: MobileAppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: MobileAppBarComposerWidgetStyle.iconSize,
+ tooltipMessage: AppLocalizations.of(context).insertImage,
+ onTapActionCallback: insertImageAction,
+ ),
+ const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
+ ],
TMailButtonWidget.fromIcon(
icon: isSendButtonEnabled
? _imagePaths.icSendMobile
@@ -58,7 +96,6 @@ class LandscapeAppBarComposerWidget extends StatelessWidget {
TMailButtonWidget.fromIcon(
icon: _imagePaths.icMore,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- borderRadius: MobileAppBarComposerWidgetStyle.iconRadius,
backgroundColor: Colors.transparent,
padding: MobileAppBarComposerWidgetStyle.iconPadding,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
diff --git a/lib/features/composer/presentation/widgets/mobile/tablet_app_bar_composer_widget.dart b/lib/features/composer/presentation/widgets/mobile/tablet_app_bar_composer_widget.dart
new file mode 100644
index 0000000000..09686971cd
--- /dev/null
+++ b/lib/features/composer/presentation/widgets/mobile/tablet_app_bar_composer_widget.dart
@@ -0,0 +1,90 @@
+import 'package:core/presentation/resources/image_paths.dart';
+import 'package:core/presentation/views/button/tmail_button_widget.dart';
+import 'package:flutter/material.dart';
+import 'package:get/get.dart';
+import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
+import 'package:tmail_ui_user/features/composer/presentation/styles/app_bar_composer_widget_style.dart';
+import 'package:tmail_ui_user/features/composer/presentation/widgets/title_composer_widget.dart';
+import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
+
+class TabletAppBarComposerWidget extends StatelessWidget {
+
+ final String emailSubject;
+ final VoidCallback onCloseViewAction;
+ final ScreenDisplayMode? displayMode;
+ final BoxConstraints? constraints;
+ final VoidCallback attachFileAction;
+ final VoidCallback insertImageAction;
+ final bool isNetworkConnectionAvailable;
+
+ final _imagePaths = Get.find();
+
+ TabletAppBarComposerWidget({
+ super.key,
+ required this.emailSubject,
+ required this.onCloseViewAction,
+ required this.attachFileAction,
+ required this.insertImageAction,
+ this.displayMode,
+ this.constraints,
+ this.isNetworkConnectionAvailable = false,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ height: AppBarComposerWidgetStyle.height,
+ padding: AppBarComposerWidgetStyle.padding,
+ color: AppBarComposerWidgetStyle.backgroundColor,
+ child: Stack(
+ children: [
+ Center(
+ child: Container(
+ constraints: constraints != null
+ ? BoxConstraints(maxWidth: constraints!.maxWidth / 2)
+ : null,
+ child: TitleComposerWidget(emailSubject: emailSubject),
+ ),
+ ),
+ Align(
+ alignment: AlignmentDirectional.centerEnd,
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ if (isNetworkConnectionAvailable)
+ ...[
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icAttachFile,
+ iconColor: AppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: AppBarComposerWidgetStyle.iconSize,
+ tooltipMessage: AppLocalizations.of(context).attach_file,
+ onTapActionCallback: attachFileAction,
+ ),
+ const SizedBox(width: AppBarComposerWidgetStyle.space),
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icInsertImage,
+ iconColor: AppBarComposerWidgetStyle.iconColor,
+ backgroundColor: Colors.transparent,
+ iconSize: AppBarComposerWidgetStyle.iconSize,
+ tooltipMessage: AppLocalizations.of(context).insertImage,
+ onTapActionCallback: insertImageAction,
+ ),
+ const SizedBox(width: AppBarComposerWidgetStyle.space),
+ ],
+ TMailButtonWidget.fromIcon(
+ icon: _imagePaths.icCancel,
+ backgroundColor: Colors.transparent,
+ tooltipMessage: AppLocalizations.of(context).saveAndClose,
+ iconSize: AppBarComposerWidgetStyle.iconSize,
+ iconColor: AppBarComposerWidgetStyle.iconColor,
+ onTapActionCallback: onCloseViewAction
+ ),
+ ],
+ ),
+ )
+ ],
+ ),
+ );
+ }
+}
\ No newline at end of file
diff --git a/lib/features/composer/presentation/widgets/web/mobile_responsive_app_bar_composer_widget.dart b/lib/features/composer/presentation/widgets/web/mobile_responsive_app_bar_composer_widget.dart
index 72cd05b5c1..5c7b0790e3 100644
--- a/lib/features/composer/presentation/widgets/web/mobile_responsive_app_bar_composer_widget.dart
+++ b/lib/features/composer/presentation/widgets/web/mobile_responsive_app_bar_composer_widget.dart
@@ -48,13 +48,11 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
tooltipMessage: AppLocalizations.of(context).saveAndClose,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- padding: MobileAppBarComposerWidgetStyle.iconPadding,
onTapActionCallback: onCloseViewAction
),
const Spacer(),
TMailButtonWidget.fromIcon(
icon: _imagePaths.icRichToolbar,
- borderRadius: MobileAppBarComposerWidgetStyle.iconRadius,
padding: MobileAppBarComposerWidgetStyle.richTextIconPadding,
backgroundColor: isFormattingOptionsEnabled
? MobileAppBarComposerWidgetStyle.selectedBackgroundColor
@@ -70,27 +68,21 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
TMailButtonWidget.fromIcon(
icon: _imagePaths.icAttachFile,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- borderRadius: MobileAppBarComposerWidgetStyle.iconRadius,
backgroundColor: Colors.transparent,
- padding: MobileAppBarComposerWidgetStyle.iconPadding,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
tooltipMessage: AppLocalizations.of(context).attach_file,
onTapActionCallback: attachFileAction,
),
const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
- AbsorbPointer(
- absorbing: isCodeViewEnabled,
- child: TMailButtonWidget.fromIcon(
+ if (!isCodeViewEnabled)
+ TMailButtonWidget.fromIcon(
icon: _imagePaths.icInsertImage,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- borderRadius: MobileAppBarComposerWidgetStyle.iconRadius,
backgroundColor: Colors.transparent,
- padding: MobileAppBarComposerWidgetStyle.iconPadding,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
tooltipMessage: AppLocalizations.of(context).insertImage,
onTapActionCallback: insertImageAction,
),
- ),
const SizedBox(width: MobileAppBarComposerWidgetStyle.space),
TMailButtonWidget.fromIcon(
icon: isSendButtonEnabled
@@ -106,9 +98,7 @@ class MobileResponsiveAppBarComposerWidget extends StatelessWidget {
TMailButtonWidget.fromIcon(
icon: _imagePaths.icMore,
iconColor: MobileAppBarComposerWidgetStyle.iconColor,
- borderRadius: MobileAppBarComposerWidgetStyle.iconRadius,
backgroundColor: Colors.transparent,
- padding: MobileAppBarComposerWidgetStyle.iconPadding,
iconSize: MobileAppBarComposerWidgetStyle.iconSize,
tooltipMessage: AppLocalizations.of(context).more,
onTapActionAtPositionCallback: openContextMenuAction,
diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart
index 6cbc94eb79..0b766ba8a7 100644
--- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart
+++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart
@@ -416,7 +416,6 @@ class MailboxDashBoardController extends ReloadableController {
_emailAddressStreamSubscription =
_emailReceiveManager.pendingEmailAddressInfo.stream.listen((emailAddress) {
if (emailAddress?.email?.isNotEmpty == true) {
- _emailReceiveManager.clearPendingEmailAddress();
goToComposer(ComposerArguments.fromEmailAddress(emailAddress!));
}
});
@@ -426,7 +425,6 @@ class MailboxDashBoardController extends ReloadableController {
_emailContentStreamSubscription =
_emailReceiveManager.pendingEmailContentInfo.stream.listen((emailContent) {
if (emailContent?.content.isNotEmpty == true) {
- _emailReceiveManager.clearPendingEmailContent();
goToComposer(ComposerArguments.fromContentShared([emailContent!].asHtmlString));
}
});
@@ -436,7 +434,6 @@ class MailboxDashBoardController extends ReloadableController {
_fileReceiveManagerStreamSubscription =
_emailReceiveManager.pendingFileInfo.stream.listen((listFile) {
if (listFile.isNotEmpty) {
- _emailReceiveManager.clearPendingFileInfo();
goToComposer(ComposerArguments.fromFileShared(listFile));
}
});
diff --git a/lib/features/upload/presentation/controller/upload_controller.dart b/lib/features/upload/presentation/controller/upload_controller.dart
index b32d4425db..37569703b1 100644
--- a/lib/features/upload/presentation/controller/upload_controller.dart
+++ b/lib/features/upload/presentation/controller/upload_controller.dart
@@ -170,9 +170,6 @@ class UploadController extends BaseController {
cid: uuid.v1()
);
- final uploadFileState = _uploadingStateInlineFiles.getUploadFileStateById(success.uploadId);
- log('UploadController::_handleProgressUploadInlineImageStateStream:uploadId: ${uploadFileState?.uploadTaskId} | fromFileShared: ${uploadFileState?.file?.isShared}');
-
_uploadingStateInlineFiles.updateElementByUploadTaskId(
success.uploadId,
(currentState) {
diff --git a/lib/main/utils/email_receive_manager.dart b/lib/main/utils/email_receive_manager.dart
index 4b0943c554..2d2c84c6c2 100644
--- a/lib/main/utils/email_receive_manager.dart
+++ b/lib/main/utils/email_receive_manager.dart
@@ -29,16 +29,16 @@ class EmailReceiveManager {
}
void setPendingEmailAddress(EmailAddress emailAddress) async {
- clearPendingEmailAddress();
+ _clearPendingEmailAddress();
_pendingEmailAddressInfo.add(emailAddress);
}
void setPendingEmailContent(EmailContent emailContent) async {
- clearPendingEmailAddress();
+ _clearPendingEmailContent();
_pendingEmailContentInfo.add(emailContent);
}
- void clearPendingEmailContent() {
+ void _clearPendingEmailContent() {
if (_pendingEmailContentInfo.isClosed) {
_pendingEmailContentInfo = BehaviorSubject.seeded(null);
} else {
@@ -46,7 +46,7 @@ class EmailReceiveManager {
}
}
- void clearPendingEmailAddress() {
+ void _clearPendingEmailAddress() {
if(_pendingEmailAddressInfo.isClosed) {
_pendingEmailAddressInfo = BehaviorSubject.seeded(null);
} else {
@@ -56,22 +56,20 @@ class EmailReceiveManager {
void closeEmailReceiveManagerStream() {
_pendingEmailAddressInfo.close();
+ _pendingEmailContentInfo.close();
+ _pendingFileInfo.close();
}
void setPendingFileInfo(List list) async {
- clearPendingFileInfo();
+ _clearPendingFileInfo();
_pendingFileInfo.add(list);
}
- void clearPendingFileInfo() {
+ void _clearPendingFileInfo() {
if(_pendingFileInfo.isClosed) {
_pendingFileInfo = BehaviorSubject.seeded(List.empty(growable: true));
} else {
_pendingFileInfo.add(List.empty(growable: true));
}
}
-
- void closeFileSharingStream() {
- _pendingFileInfo.close();
- }
}
\ No newline at end of file
diff --git a/pubspec.lock b/pubspec.lock
index c2272824e9..a5478ce23b 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -437,7 +437,7 @@ packages:
description:
path: "."
ref: cnb_supported
- resolved-ref: "6409f47b01c5992906971f2d8fdb8be3278bf787"
+ resolved-ref: "532bc9de03c273ec88db7bd66436c808b570a934"
url: "https://github.com/linagora/enough_html_editor.git"
source: git
version: "0.0.5"