TF-3479 Remove ComposerUtils & only sync composer state when composers is not empty
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
extension UpdateScreenDisplayModeExtension on ComposerController {
|
extension UpdateScreenDisplayModeExtension on ComposerController {
|
||||||
@@ -21,9 +21,9 @@ extension UpdateScreenDisplayModeExtension on ComposerController {
|
|||||||
double get composerWidth {
|
double get composerWidth {
|
||||||
switch (screenDisplayMode.value) {
|
switch (screenDisplayMode.value) {
|
||||||
case ScreenDisplayMode.normal:
|
case ScreenDisplayMode.normal:
|
||||||
return ComposerUtils.normalWidth;
|
return ComposerStyle.normalWidth;
|
||||||
case ScreenDisplayMode.minimize:
|
case ScreenDisplayMode.minimize:
|
||||||
return ComposerUtils.minimizeWidth;
|
return ComposerStyle.minimizeWidth;
|
||||||
case ScreenDisplayMode.hidden:
|
case ScreenDisplayMode.hidden:
|
||||||
case ScreenDisplayMode.fullScreen:
|
case ScreenDisplayMode.fullScreen:
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:tmail_ui_user/features/composer/presentation/composer_controller
|
|||||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/update_screen_display_mode_extension.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/extensions/update_screen_display_mode_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/model/screen_display_mode.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
@@ -90,9 +90,9 @@ class ComposerManager extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final availableWidth = screenWidth
|
final availableWidth = screenWidth
|
||||||
- ComposerUtils.composerExpandMoreButtonMaxWidth
|
- ComposerStyle.composerExpandMoreButtonMaxWidth
|
||||||
- ComposerUtils.padding * 3
|
- ComposerStyle.padding * 3
|
||||||
- (countDisplayedComposer - 1) * ComposerUtils.space;
|
- (countDisplayedComposer - 1) * ComposerStyle.space;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
availableWidth,
|
availableWidth,
|
||||||
@@ -110,7 +110,7 @@ class ComposerManager extends GetxController {
|
|||||||
if (currentHiddenComposerIds.isEmpty) return;
|
if (currentHiddenComposerIds.isEmpty) return;
|
||||||
|
|
||||||
for (var index = currentHiddenComposerIds.length - 1; index >= 0; index--) {
|
for (var index = currentHiddenComposerIds.length - 1; index >= 0; index--) {
|
||||||
final newTotalWidth = totalWidth + ComposerUtils.minimizeWidth;
|
final newTotalWidth = totalWidth + ComposerStyle.minimizeWidth;
|
||||||
if (newTotalWidth > availableWidth) break;
|
if (newTotalWidth > availableWidth) break;
|
||||||
|
|
||||||
final id = currentHiddenComposerIds.elementAt(index);
|
final id = currentHiddenComposerIds.elementAt(index);
|
||||||
@@ -126,18 +126,18 @@ class ComposerManager extends GetxController {
|
|||||||
final controller = composerControllers[id]!;
|
final controller = composerControllers[id]!;
|
||||||
|
|
||||||
if (controller.isNormalScreen) {
|
if (controller.isNormalScreen) {
|
||||||
var newTotalWidth = totalWidth - (ComposerUtils.normalWidth - ComposerUtils.minimizeWidth);
|
var newTotalWidth = totalWidth - (ComposerStyle.normalWidth - ComposerStyle.minimizeWidth);
|
||||||
var newDisplayMode = ScreenDisplayMode.minimize;
|
var newDisplayMode = ScreenDisplayMode.minimize;
|
||||||
|
|
||||||
if (newTotalWidth > availableWidth) {
|
if (newTotalWidth > availableWidth) {
|
||||||
newTotalWidth = totalWidth - ComposerUtils.normalWidth;
|
newTotalWidth = totalWidth - ComposerStyle.normalWidth;
|
||||||
newDisplayMode = ScreenDisplayMode.hidden;
|
newDisplayMode = ScreenDisplayMode.hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
controller.setScreenDisplayMode(newDisplayMode);
|
controller.setScreenDisplayMode(newDisplayMode);
|
||||||
totalWidth = newTotalWidth;
|
totalWidth = newTotalWidth;
|
||||||
} else if (controller.isMinimizeScreen) {
|
} else if (controller.isMinimizeScreen) {
|
||||||
final newTotalWidth = totalWidth - ComposerUtils.minimizeWidth;
|
final newTotalWidth = totalWidth - ComposerStyle.minimizeWidth;
|
||||||
controller.setScreenDisplayMode(ScreenDisplayMode.hidden);
|
controller.setScreenDisplayMode(ScreenDisplayMode.hidden);
|
||||||
totalWidth = newTotalWidth;
|
totalWidth = newTotalWidth;
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ class ComposerManager extends GetxController {
|
|||||||
if (currentHiddenComposerIds.isEmpty) return;
|
if (currentHiddenComposerIds.isEmpty) return;
|
||||||
|
|
||||||
for (var index = currentHiddenComposerIds.length - 1; index >= 0; index--) {
|
for (var index = currentHiddenComposerIds.length - 1; index >= 0; index--) {
|
||||||
final newTotalWidth = totalWidth + ComposerUtils.minimizeWidth;
|
final newTotalWidth = totalWidth + ComposerStyle.minimizeWidth;
|
||||||
if (newTotalWidth > availableWidth) break;
|
if (newTotalWidth > availableWidth) break;
|
||||||
|
|
||||||
final id = currentHiddenComposerIds.elementAt(index);
|
final id = currentHiddenComposerIds.elementAt(index);
|
||||||
@@ -174,7 +174,7 @@ class ComposerManager extends GetxController {
|
|||||||
if (id == updatedComposerId) continue;
|
if (id == updatedComposerId) continue;
|
||||||
|
|
||||||
composerControllers[id]!.setScreenDisplayMode(ScreenDisplayMode.hidden);
|
composerControllers[id]!.setScreenDisplayMode(ScreenDisplayMode.hidden);
|
||||||
totalWidth -= ComposerUtils.minimizeWidth;
|
totalWidth -= ComposerStyle.minimizeWidth;
|
||||||
if (totalWidth <= availableWidth) return;
|
if (totalWidth <= availableWidth) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,14 +182,14 @@ class ComposerManager extends GetxController {
|
|||||||
if (id == updatedComposerId) continue;
|
if (id == updatedComposerId) continue;
|
||||||
|
|
||||||
final controller = composerControllers[id]!;
|
final controller = composerControllers[id]!;
|
||||||
var newTotalWidth = totalWidth - (ComposerUtils.normalWidth - ComposerUtils.minimizeWidth);
|
var newTotalWidth = totalWidth - (ComposerStyle.normalWidth - ComposerStyle.minimizeWidth);
|
||||||
|
|
||||||
if (newTotalWidth <= availableWidth) {
|
if (newTotalWidth <= availableWidth) {
|
||||||
controller.setScreenDisplayMode(ScreenDisplayMode.minimize);
|
controller.setScreenDisplayMode(ScreenDisplayMode.minimize);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
newTotalWidth = totalWidth - ComposerUtils.normalWidth;
|
newTotalWidth = totalWidth - ComposerStyle.normalWidth;
|
||||||
if (newTotalWidth <= availableWidth) {
|
if (newTotalWidth <= availableWidth) {
|
||||||
controller.setScreenDisplayMode(ScreenDisplayMode.hidden);
|
controller.setScreenDisplayMode(ScreenDisplayMode.hidden);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -9,6 +9,14 @@ class ComposerStyle {
|
|||||||
static const double keyboardToolBarHeight = 200;
|
static const double keyboardToolBarHeight = 200;
|
||||||
static const double popupMenuRadius = 8;
|
static const double popupMenuRadius = 8;
|
||||||
static const double suggestionItemHeight = 60;
|
static const double suggestionItemHeight = 60;
|
||||||
|
static const double normalWidth = 725;
|
||||||
|
static const double normalHeight = 525;
|
||||||
|
static const double minimizeWidth = 400;
|
||||||
|
static const double minimizeHeight = 52;
|
||||||
|
static const double composerExpandMoreButtonMaxWidth = 130;
|
||||||
|
static const double composerExpandMoreButtonMaxHeight = 52;
|
||||||
|
static const double padding = 16;
|
||||||
|
static const double space = 8;
|
||||||
|
|
||||||
static const Color borderColor = AppColor.colorLineComposer;
|
static const Color borderColor = AppColor.colorLineComposer;
|
||||||
static const Color backgroundEditorColor = Colors.white;
|
static const Color backgroundEditorColor = Colors.white;
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
|
|
||||||
class MinimizeComposerWidgetStyle {
|
class MinimizeComposerWidgetStyle {
|
||||||
static const double radius = 24;
|
static const double radius = 24;
|
||||||
static const double elevation = 16;
|
static const double elevation = 16;
|
||||||
static const double width = ComposerUtils.minimizeWidth;
|
static const double width = ComposerStyle.minimizeWidth;
|
||||||
static const double height = ComposerUtils.minimizeHeight;
|
static const double height = ComposerStyle.minimizeHeight;
|
||||||
static const double space = 8;
|
static const double space = 8;
|
||||||
static const double iconSize = 20;
|
static const double iconSize = 20;
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
|
|
||||||
class DesktopResponsiveContainerViewStyle {
|
class DesktopResponsiveContainerViewStyle {
|
||||||
static const double radius = 28;
|
static const double radius = 28;
|
||||||
static const double margin = 20;
|
static const double margin = 20;
|
||||||
static const double elevation = 16;
|
static const double elevation = 16;
|
||||||
static const double normalScreenMaxWidth = ComposerUtils.normalWidth;
|
static const double normalScreenMaxWidth = ComposerStyle.normalWidth;
|
||||||
static const double normalScreenMaxHeight = ComposerUtils.normalHeight;
|
static const double normalScreenMaxHeight = ComposerStyle.normalHeight;
|
||||||
|
|
||||||
static const Color backgroundColor = Colors.white;
|
static const Color backgroundColor = Colors.white;
|
||||||
static const Color outSideBackgroundColor = Colors.black38;
|
static const Color outSideBackgroundColor = Colors.black38;
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
class ComposerUtils {
|
|
||||||
static const double normalWidth = 725;
|
|
||||||
static const double normalHeight = 525;
|
|
||||||
static const double minimizeWidth = 400;
|
|
||||||
static const double minimizeHeight = 52;
|
|
||||||
static const double composerExpandMoreButtonMaxWidth = 130;
|
|
||||||
static const double composerExpandMoreButtonMaxHeight = 52;
|
|
||||||
static const double padding = 16;
|
|
||||||
static const double space = 8;
|
|
||||||
}
|
|
||||||
@@ -4,32 +4,23 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/update_screen_display_mode_extension.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/extensions/update_screen_display_mode_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/expand_composer_button.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/expand_composer_button.dart';
|
||||||
|
|
||||||
class ComposerOverlayView extends StatefulWidget {
|
class ComposerOverlayView extends StatelessWidget {
|
||||||
const ComposerOverlayView({super.key});
|
final ComposerManager _composerManager = Get.find<ComposerManager>();
|
||||||
|
final ResponsiveUtils _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
|
||||||
@override
|
ComposerOverlayView({super.key});
|
||||||
State<ComposerOverlayView> createState() => _ComposerOverlayViewState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _ComposerOverlayViewState extends State<ComposerOverlayView> {
|
|
||||||
late final ComposerManager _composerManager;
|
|
||||||
late final ResponsiveUtils _responsiveUtils;
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
_composerManager = Get.find<ComposerManager>();
|
|
||||||
_responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
_composerManager.syncComposerStateWhenResponsiveChanged(
|
if (_composerManager.composers.isNotEmpty) {
|
||||||
screenWidth: context.width,
|
_composerManager.syncComposerStateWhenResponsiveChanged(
|
||||||
);
|
screenWidth: context.width,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
final composers = _composerManager.composers;
|
final composers = _composerManager.composers;
|
||||||
final composerIdsQueue = _composerManager.composerIdsQueue;
|
final composerIdsQueue = _composerManager.composerIdsQueue;
|
||||||
@@ -58,7 +49,7 @@ class _ComposerOverlayViewState extends State<ComposerOverlayView> {
|
|||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
scrollDirection: Axis.horizontal,
|
scrollDirection: Axis.horizontal,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsetsDirectional.all(ComposerUtils.padding),
|
padding: const EdgeInsetsDirectional.all(ComposerStyle.padding),
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/hidden_composer_list_view_overlay.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/hidden_composer_list_view_overlay.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
@@ -57,8 +57,8 @@ class _ExpandComposerButtonState extends State<ExpandComposerButton> {
|
|||||||
borderRadius: const BorderRadius.all(Radius.circular(12)),
|
borderRadius: const BorderRadius.all(Radius.circular(12)),
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
width: ComposerUtils.composerExpandMoreButtonMaxWidth,
|
width: ComposerStyle.composerExpandMoreButtonMaxWidth,
|
||||||
height: ComposerUtils.composerExpandMoreButtonMaxHeight,
|
height: ComposerStyle.composerExpandMoreButtonMaxHeight,
|
||||||
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8),
|
padding: const EdgeInsetsDirectional.symmetric(horizontal: 8),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
+3
-3
@@ -4,8 +4,8 @@ import 'package:core/presentation/utils/responsive_utils.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/manager/composer_manager.dart';
|
||||||
|
import 'package:tmail_ui_user/features/composer/presentation/styles/composer_style.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/styles/web/hidden_composer_item_style.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/styles/web/hidden_composer_item_style.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/utils/composer_utils.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/hidden_composer_item.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/widgets/web/hidden_composer_item.dart';
|
||||||
|
|
||||||
typedef OnRemoveHiddenComposerItem = Function(ComposerController controller);
|
typedef OnRemoveHiddenComposerItem = Function(ComposerController controller);
|
||||||
@@ -32,8 +32,8 @@ class HiddenComposerListViewOverlay extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final hiddenComposerIds = composerManager.hiddenComposerIds;
|
final hiddenComposerIds = composerManager.hiddenComposerIds;
|
||||||
final maxHeight = responsiveUtils.getSizeScreenHeight(context)
|
final maxHeight = responsiveUtils.getSizeScreenHeight(context)
|
||||||
- ComposerUtils.composerExpandMoreButtonMaxHeight
|
- ComposerStyle.composerExpandMoreButtonMaxHeight
|
||||||
- ComposerUtils.padding * 2;
|
- ComposerStyle.padding * 2;
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
constraints: BoxConstraints(maxHeight: maxHeight),
|
constraints: BoxConstraints(maxHeight: maxHeight),
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
const ComposerOverlayView(),
|
ComposerOverlayView(),
|
||||||
Obx(() => controller.searchMailboxActivated.value == true && !controller.responsiveUtils.isWebDesktop(context)
|
Obx(() => controller.searchMailboxActivated.value == true && !controller.responsiveUtils.isWebDesktop(context)
|
||||||
? const SearchMailboxView()
|
? const SearchMailboxView()
|
||||||
: const SizedBox.shrink()
|
: const SizedBox.shrink()
|
||||||
|
|||||||
Reference in New Issue
Block a user