From 8e2932658bc631ecfdd08f4d1d25666423ddad83 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 16 Dec 2025 16:47:32 +0700 Subject: [PATCH] TF-4141 Disable drag & drop email to Action required folder --- .../widgets/mailbox_item_widget.dart | 105 ++++++++++-------- 1 file changed, 58 insertions(+), 47 deletions(-) diff --git a/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart b/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart index 985b6b1f4..61352a41a 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart @@ -77,59 +77,70 @@ class _MailboxItemWidgetState extends State { @override Widget build(BuildContext context) { if (_responsiveUtils.isWebDesktop(context) && widget.mailboxDisplayed == MailboxDisplayed.mailbox) { - return DragTarget>( - key: _key, - builder: (context, candidateEmails, rejectedEmails) { - return Material( - type: MaterialType.transparency, - child: InkWell( - onTap: () => widget.onOpenMailboxFolderClick?.call(widget.mailboxNode), - onHover: (value) => setState(() => _isItemHovered = value), + final itemWidget = Material( + key: widget.mailboxNode.item.isActionRequired ? _key : null, + type: MaterialType.transparency, + child: InkWell( + onTap: () => + widget.onOpenMailboxFolderClick?.call(widget.mailboxNode), + onHover: (value) => setState(() => _isItemHovered = value), + borderRadius: const BorderRadius.all( + Radius.circular(MailboxItemWidgetStyles.borderRadius), + ), + child: Container( + decoration: BoxDecoration( borderRadius: const BorderRadius.all( Radius.circular(MailboxItemWidgetStyles.borderRadius), ), - child: Container( - decoration: BoxDecoration( - borderRadius: const BorderRadius.all( - Radius.circular(MailboxItemWidgetStyles.borderRadius), - ), - color: backgroundColorItem, - ), - padding: const EdgeInsetsDirectional.symmetric( - horizontal: MailboxItemWidgetStyles.itemPadding, - ), - height: widget.itemHeight ?? (widget.mailboxNode.item.isTeamMailboxes + color: backgroundColorItem, + ), + padding: const EdgeInsetsDirectional.symmetric( + horizontal: MailboxItemWidgetStyles.itemPadding, + ), + height: widget.itemHeight ?? + (widget.mailboxNode.item.isTeamMailboxes ? MailboxItemWidgetStyles.teamMailboxHeight : MailboxItemWidgetStyles.height), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: widget.mailboxNode.item.isTeamMailboxes - ? CrossAxisAlignment.start - : CrossAxisAlignment.center, - children: [ - if (_isIconDisplayed) - MailboxIconWidget( - icon: _iconMailbox, - color: widget.iconColor, - ), - Expanded( - child: LabelMailboxItemWidget( - itemKey: _key, - mailboxNode: widget.mailboxNode, - isItemHovered: _isItemHovered, - isSelected: _isSelected, - isHighlighted: widget.isHighlighted, - textStyle: widget.textStyle, - onMenuActionClick: widget.onMenuActionClick, - onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback, - onClickExpandMailboxNodeAction: widget.onExpandFolderActionClick, - ) - ), - ] - ) - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: widget.mailboxNode.item.isTeamMailboxes + ? CrossAxisAlignment.start + : CrossAxisAlignment.center, + children: [ + if (_isIconDisplayed) + MailboxIconWidget( + icon: _iconMailbox, + color: widget.iconColor, + ), + Expanded( + child: LabelMailboxItemWidget( + itemKey: _key, + mailboxNode: widget.mailboxNode, + isItemHovered: _isItemHovered, + isSelected: _isSelected, + isHighlighted: widget.isHighlighted, + textStyle: widget.textStyle, + onMenuActionClick: widget.onMenuActionClick, + onEmptyMailboxActionCallback: + widget.onEmptyMailboxActionCallback, + onClickExpandMailboxNodeAction: + widget.onExpandFolderActionClick, + ), + ), + ], ), - ); + ), + ), + ); + + if (widget.mailboxNode.item.isActionRequired) { + return itemWidget; + } + + return DragTarget>( + key: _key, + builder: (context, candidateEmails, rejectedEmails) { + return itemWidget; }, onAcceptWithDetails: (emails) => widget.onDragItemAccepted?.call(emails.data, widget.mailboxNode.item), );