TF-3758 Remove selection mailbox in left menu on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -120,7 +120,6 @@ class MailboxController extends BaseMailboxController
|
||||
|
||||
IOSSharingManager? _iosSharingManager;
|
||||
|
||||
final currentSelectMode = SelectMode.INACTIVE.obs;
|
||||
final _activeScrollTop = RxBool(false);
|
||||
final _activeScrollBottom = RxBool(true);
|
||||
|
||||
@@ -929,16 +928,6 @@ class MailboxController extends BaseMailboxController
|
||||
closeMailboxScreen(context);
|
||||
}
|
||||
|
||||
void enableSelectionMailbox() {
|
||||
currentSelectMode.value = SelectMode.ACTIVE;
|
||||
}
|
||||
|
||||
void disableSelectionMailbox() {
|
||||
_cancelSelectMailbox();
|
||||
}
|
||||
|
||||
bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE;
|
||||
|
||||
List<MailboxActions> get listActionOfMailboxSelected {
|
||||
final currentMailboxesSelected = listMailboxSelected;
|
||||
|
||||
@@ -964,11 +953,6 @@ class MailboxController extends BaseMailboxController
|
||||
}
|
||||
}
|
||||
|
||||
void _cancelSelectMailbox() {
|
||||
unAllSelectedMailboxNode();
|
||||
currentSelectMode.value = SelectMode.INACTIVE;
|
||||
}
|
||||
|
||||
List<PresentationMailbox> get listMailboxSelected {
|
||||
final defaultMailboxSelected = defaultMailboxTree.value
|
||||
.findNodes((node) => node.selectMode == SelectMode.ACTIVE);
|
||||
@@ -1042,7 +1026,6 @@ class MailboxController extends BaseMailboxController
|
||||
_deleteMailboxFailure(DeleteMultipleMailboxFailure(null));
|
||||
}
|
||||
|
||||
_cancelSelectMailbox();
|
||||
popBack();
|
||||
}
|
||||
|
||||
@@ -1112,7 +1095,6 @@ class MailboxController extends BaseMailboxController
|
||||
_deleteMailboxFailure(DeleteMultipleMailboxFailure(null));
|
||||
}
|
||||
|
||||
_cancelSelectMailbox();
|
||||
popBack();
|
||||
}
|
||||
|
||||
@@ -1141,8 +1123,6 @@ class MailboxController extends BaseMailboxController
|
||||
RenameMailboxRequest(presentationMailbox.id, newMailboxName))
|
||||
);
|
||||
}
|
||||
|
||||
_cancelSelectMailbox();
|
||||
}
|
||||
|
||||
void _handleMovingMailbox(
|
||||
@@ -1324,7 +1304,6 @@ class MailboxController extends BaseMailboxController
|
||||
mailboxSelected,
|
||||
destinationMailbox: destinationMailbox
|
||||
);
|
||||
_cancelSelectMailbox();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1352,7 +1331,6 @@ class MailboxController extends BaseMailboxController
|
||||
}
|
||||
|
||||
void closeMailboxScreen(BuildContext context) {
|
||||
_cancelSelectMailbox();
|
||||
mailboxDashBoardController.closeMailboxMenuDrawer();
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@ import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/folder_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/folders_bar_widget.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_category_widget.dart';
|
||||
@@ -31,69 +30,25 @@ class MailboxView extends BaseMailboxView {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
buildMailboxAppBar(),
|
||||
Expanded(
|
||||
child: Column(children: [
|
||||
buildMailboxAppBar(),
|
||||
Expanded(child: RefreshIndicator(
|
||||
color: AppColor.primaryColor,
|
||||
onRefresh: controller.refreshAllMailbox,
|
||||
child: _buildListMailbox(context)
|
||||
)),
|
||||
Obx(() {
|
||||
if (controller.isSelectionEnabled()
|
||||
&& controller.listActionOfMailboxSelected.isNotEmpty) {
|
||||
return SafeArea(
|
||||
right: false,
|
||||
top: false,
|
||||
child: BottomBarSelectionMailboxWidget(
|
||||
controller.listMailboxSelected,
|
||||
controller.listActionOfMailboxSelected,
|
||||
onMailboxActionsClick: (actions, listMailboxSelected) {
|
||||
return controller.pressMailboxSelectionAction(
|
||||
context,
|
||||
actions,
|
||||
listMailboxSelected
|
||||
);
|
||||
}
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
]),
|
||||
child: RefreshIndicator(
|
||||
color: AppColor.primaryColor,
|
||||
onRefresh: controller.refreshAllMailbox,
|
||||
child: _buildListMailbox(context),
|
||||
),
|
||||
),
|
||||
const Divider(color: AppColor.colorDividerHorizontal),
|
||||
const QuotasView(),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
color: Colors.white,
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: ApplicationVersionWidget(
|
||||
padding: EdgeInsets.zero,
|
||||
title: '${AppLocalizations.of(context).version} ',
|
||||
),
|
||||
),
|
||||
Obx(() {
|
||||
if (controller.isSelectionEnabled()) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
return const Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Divider(color: AppColor.colorDividerHorizontal),
|
||||
QuotasView()
|
||||
],
|
||||
);
|
||||
}),
|
||||
Obx(() {
|
||||
if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) {
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
color: Colors.white,
|
||||
padding: const EdgeInsets.all(16),
|
||||
child: SafeArea(
|
||||
top: false,
|
||||
child: ApplicationVersionWidget(
|
||||
padding: EdgeInsets.zero,
|
||||
title: '${AppLocalizations.of(context).version} ',
|
||||
),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -121,8 +76,7 @@ class MailboxView extends BaseMailboxView {
|
||||
}),
|
||||
Obx(() {
|
||||
if (controller.mailboxDashBoardController.listSendingEmails.isNotEmpty &&
|
||||
PlatformInfo.isMobile &&
|
||||
!controller.isSelectionEnabled()) {
|
||||
PlatformInfo.isMobile) {
|
||||
return SendingQueueMailboxWidget(
|
||||
listSendingEmails: controller.mailboxDashBoardController.listSendingEmails,
|
||||
onOpenSendingQueueAction: () => controller.openSendingQueueViewAction(context),
|
||||
@@ -284,7 +238,6 @@ class MailboxView extends BaseMailboxView {
|
||||
paddingChild: const EdgeInsetsDirectional.only(start: 14),
|
||||
parent: Obx(() => MailboxItemWidget(
|
||||
mailboxNode: mailboxNode,
|
||||
selectionMode: controller.currentSelectMode.value,
|
||||
mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value,
|
||||
onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, controller.imagePaths, mailboxNode.item, controller),
|
||||
onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item),
|
||||
@@ -301,7 +254,6 @@ class MailboxView extends BaseMailboxView {
|
||||
} else {
|
||||
return Obx(() => MailboxItemWidget(
|
||||
mailboxNode: mailboxNode,
|
||||
selectionMode: controller.currentSelectMode.value,
|
||||
mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value,
|
||||
onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, controller.imagePaths, mailboxNode.item, controller),
|
||||
onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item),
|
||||
|
||||
@@ -6,5 +6,4 @@ class MailboxItemWidgetStyles {
|
||||
static const double height = 36;
|
||||
static const double teamMailboxHeight = 52;
|
||||
static const double labelIconSpace = 16;
|
||||
static const double teamMailboxLabelSpace = 3;
|
||||
}
|
||||
@@ -1,70 +1,25 @@
|
||||
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_icon_widget_styles.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart';
|
||||
|
||||
class MailboxIconWidget extends StatelessWidget {
|
||||
final String icon;
|
||||
|
||||
final ImagePaths imagePaths;
|
||||
final MailboxNode mailboxNode;
|
||||
final SelectMode selectionMode;
|
||||
final OnSelectMailboxNodeAction? onSelectMailboxFolderClick;
|
||||
final EdgeInsetsGeometry? padding;
|
||||
|
||||
const MailboxIconWidget({
|
||||
super.key,
|
||||
required this.mailboxNode,
|
||||
required this.imagePaths,
|
||||
this.selectionMode = SelectMode.INACTIVE,
|
||||
this.padding,
|
||||
this.onSelectMailboxFolderClick,
|
||||
});
|
||||
const MailboxIconWidget({super.key, required this.icon});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget? item;
|
||||
|
||||
if (_isSelectionActivatedOnMobile) {
|
||||
item = InkWell(
|
||||
onTap: () => onSelectMailboxFolderClick?.call(mailboxNode),
|
||||
child: SvgPicture.asset(
|
||||
_getSelectionIcon(imagePaths),
|
||||
width: MailboxIconWidgetStyles.iconSize,
|
||||
height: MailboxIconWidgetStyles.iconSize,
|
||||
fit: BoxFit.fill,
|
||||
)
|
||||
);
|
||||
} else if (mailboxNode.item.isPersonal || mailboxNode.item.hasParentId()) {
|
||||
item = SvgPicture.asset(
|
||||
mailboxNode.item.getMailboxIcon(imagePaths),
|
||||
return Padding(
|
||||
padding: const EdgeInsetsDirectional.only(
|
||||
end: MailboxItemWidgetStyles.labelIconSpace,
|
||||
),
|
||||
child: SvgPicture.asset(
|
||||
icon,
|
||||
width: MailboxIconWidgetStyles.iconSize,
|
||||
height: MailboxIconWidgetStyles.iconSize,
|
||||
fit: BoxFit.fill,
|
||||
);
|
||||
}
|
||||
|
||||
if (padding != null) {
|
||||
return Padding(
|
||||
padding: padding!,
|
||||
child: item ?? const SizedBox.shrink(),
|
||||
);
|
||||
} else {
|
||||
return item ?? const SizedBox.shrink();
|
||||
}
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
bool get _isSelectionActivatedOnMobile => PlatformInfo.isMobile && selectionMode == SelectMode.ACTIVE;
|
||||
|
||||
String _getSelectionIcon(ImagePaths imagePaths) {
|
||||
return mailboxNode.selectMode == SelectMode.ACTIVE
|
||||
? imagePaths.icSelected
|
||||
: imagePaths.icUnSelected;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
@@ -21,7 +21,6 @@ import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_icon
|
||||
class MailboxItemWidget extends StatefulWidget {
|
||||
|
||||
final MailboxNode mailboxNode;
|
||||
final SelectMode selectionMode;
|
||||
final MailboxDisplayed mailboxDisplayed;
|
||||
final PresentationMailbox? mailboxNodeSelected;
|
||||
final MailboxActions? mailboxActions;
|
||||
@@ -38,7 +37,6 @@ class MailboxItemWidget extends StatefulWidget {
|
||||
const MailboxItemWidget({
|
||||
super.key,
|
||||
required this.mailboxNode,
|
||||
this.selectionMode = SelectMode.INACTIVE,
|
||||
this.mailboxDisplayed = MailboxDisplayed.mailbox,
|
||||
this.mailboxNodeSelected,
|
||||
this.mailboxActions,
|
||||
@@ -90,17 +88,8 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
|
||||
? CrossAxisAlignment.start
|
||||
: CrossAxisAlignment.center,
|
||||
children: [
|
||||
MailboxIconWidget(
|
||||
imagePaths: _imagePaths,
|
||||
mailboxNode: widget.mailboxNode,
|
||||
selectionMode: widget.selectionMode,
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
end: widget.mailboxNode.item.isTeamMailboxes
|
||||
? MailboxItemWidgetStyles.teamMailboxLabelSpace
|
||||
: MailboxItemWidgetStyles.labelIconSpace,
|
||||
),
|
||||
onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick,
|
||||
),
|
||||
if (_isIconDisplayed)
|
||||
MailboxIconWidget(icon: _iconMailbox),
|
||||
Expanded(
|
||||
child: LabelMailboxItemWidget(
|
||||
itemKey: _key,
|
||||
@@ -141,17 +130,8 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
|
||||
: MailboxItemWidgetStyles.height,
|
||||
child: Row(
|
||||
children: [
|
||||
MailboxIconWidget(
|
||||
imagePaths: _imagePaths,
|
||||
mailboxNode: widget.mailboxNode,
|
||||
selectionMode: widget.selectionMode,
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
end: widget.mailboxNode.item.isTeamMailboxes
|
||||
? MailboxItemWidgetStyles.teamMailboxLabelSpace
|
||||
: MailboxItemWidgetStyles.labelIconSpace,
|
||||
),
|
||||
onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick,
|
||||
),
|
||||
if (_isIconDisplayed)
|
||||
MailboxIconWidget(icon: _iconMailbox),
|
||||
Expanded(
|
||||
child: LabelMailboxItemWidget(
|
||||
itemKey: _key,
|
||||
@@ -175,9 +155,7 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onLongPress: () => widget.onLongPressMailboxNodeAction?.call(widget.mailboxNode),
|
||||
onTap: () => widget.selectionMode == SelectMode.ACTIVE
|
||||
? widget.onSelectMailboxFolderClick?.call(widget.mailboxNode)
|
||||
: widget.onOpenMailboxFolderClick?.call(widget.mailboxNode),
|
||||
onTap: () => widget.onOpenMailboxFolderClick?.call(widget.mailboxNode),
|
||||
borderRadius: const BorderRadius.all(Radius.circular(MailboxItemWidgetStyles.borderRadius)),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
@@ -192,17 +170,8 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
|
||||
: MailboxItemWidgetStyles.height,
|
||||
child: Row(
|
||||
children: [
|
||||
MailboxIconWidget(
|
||||
imagePaths: _imagePaths,
|
||||
mailboxNode: widget.mailboxNode,
|
||||
selectionMode: widget.selectionMode,
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
end: widget.mailboxNode.item.isTeamMailboxes
|
||||
? MailboxItemWidgetStyles.teamMailboxLabelSpace
|
||||
: MailboxItemWidgetStyles.labelIconSpace,
|
||||
),
|
||||
onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick,
|
||||
),
|
||||
if (_isIconDisplayed)
|
||||
MailboxIconWidget(icon: _iconMailbox),
|
||||
Expanded(
|
||||
child: LabelMailboxItemWidget(
|
||||
itemKey: _key,
|
||||
@@ -255,17 +224,8 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
|
||||
: Colors.transparent,
|
||||
child: Row(
|
||||
children: [
|
||||
MailboxIconWidget(
|
||||
imagePaths: _imagePaths,
|
||||
mailboxNode: widget.mailboxNode,
|
||||
selectionMode: widget.selectionMode,
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
end: widget.mailboxNode.item.isTeamMailboxes
|
||||
? MailboxItemWidgetStyles.teamMailboxLabelSpace
|
||||
: MailboxItemWidgetStyles.labelIconSpace,
|
||||
),
|
||||
onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick,
|
||||
),
|
||||
if (_isIconDisplayed)
|
||||
MailboxIconWidget(icon: _iconMailbox),
|
||||
Expanded(
|
||||
child: LabelMailboxItemWidget(
|
||||
itemKey: _key,
|
||||
@@ -320,4 +280,11 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
|
||||
widget.mailboxActions == MailboxActions.create ||
|
||||
widget.mailboxActions == MailboxActions.moveEmail
|
||||
);
|
||||
|
||||
bool get _isIconDisplayed =>
|
||||
widget.mailboxNode.item.isPersonal ||
|
||||
widget.mailboxNode.item.hasParentId();
|
||||
|
||||
String get _iconMailbox =>
|
||||
widget.mailboxNode.item.getMailboxIcon(_imagePaths);
|
||||
}
|
||||
Reference in New Issue
Block a user