TF-3758 Update mailbox view on mobile web responsive

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-05-30 16:57:07 +07:00
committed by Dat H. Pham
parent 6c7602ebe6
commit 15c0d58c7c
26 changed files with 695 additions and 898 deletions
@@ -0,0 +1,110 @@
import 'package:core/utils/app_logger.dart';
import 'package:flutter/material.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:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_utils.dart';
extension HandleMailboxActionExtension on MailboxController {
void handleLongPressMailboxNodeAction(
BuildContext context,
PresentationMailbox mailbox,
) {
final deletedMessageVaultSupported =
MailboxUtils.isDeletedMessageVaultSupported(session, accountId);
final isSubAddressingSupported =
session?.isSubAddressingSupported(accountId) ?? false;
final contextMenuActions = listContextMenuItemAction(
mailbox,
mailboxDashBoardController.enableSpamReport,
deletedMessageVaultSupported,
isSubAddressingSupported,
);
if (contextMenuActions.isEmpty) {
return;
}
openContextMenuAction(
context,
contextMenuMailboxActionTiles(
context,
imagePaths,
mailbox,
contextMenuActions,
handleMailboxAction: handleMailboxAction,
),
);
}
void handleDragItemAccepted(
List<PresentationEmail> listEmails,
PresentationMailbox presentationMailbox,
) {
final mailboxPath = findNodePath(presentationMailbox.id)
?? presentationMailbox.name?.name;
log('HandleMailboxActionExtension::handleDragItemAccepted():mailboxPath = $mailboxPath');
final newMailbox = mailboxPath != null
? presentationMailbox.toPresentationMailboxWithMailboxPath(mailboxPath)
: presentationMailbox;
mailboxDashBoardController.dragSelectedMultipleEmailToMailboxAction(
listEmails,
newMailbox,
);
}
void openMailboxContextMenuAction(
BuildContext context,
RelativeRect position,
PresentationMailbox mailbox,
) {
final deletedMessageVaultSupported =
MailboxUtils.isDeletedMessageVaultSupported(session, accountId);
final isSubAddressingSupported =
session?.isSubAddressingSupported(accountId) ?? false;
final contextMenuActions = listContextMenuItemAction(
mailbox,
mailboxDashBoardController.enableSpamReport,
deletedMessageVaultSupported,
isSubAddressingSupported,
);
if (contextMenuActions.isEmpty) {
return;
}
if (responsiveUtils.isScreenWithShortestSide(context)) {
openContextMenuAction(
context,
contextMenuMailboxActionTiles(
context,
imagePaths,
mailbox,
contextMenuActions,
handleMailboxAction: handleMailboxAction,
)
);
} else {
openPopupMenuAction(
context,
position,
popupMenuMailboxActionTiles(
context,
imagePaths,
mailbox,
contextMenuActions,
handleMailboxAction: handleMailboxAction,
),
);
}
}
}
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosyst
extension OpenAppGridExtension on MailboxController {
void openAppGrid(List<AppLinagoraEcosystem> linagoraApps) {
log('OpenAppGridExtension::openAppGrid: length of linagoraApps = ${linagoraApps.length}');
mailboxDashBoardController.isAppGridDialogDisplayed.value = true;
Get.dialog(
Center(
child: Dialog(
@@ -55,7 +56,8 @@ extension OpenAppGridExtension on MailboxController {
),
),
barrierColor: AppColor.blackAlpha20,
);
).whenComplete(() =>
mailboxDashBoardController.isAppGridDialogDisplayed.value = false);
}
Future<void> _handleOpenApp(AppLinagoraEcosystem app) async {