TF-1083: add drag single mail

This commit is contained in:
ManhNTX
2022-10-20 15:55:40 +07:00
committed by Dat H. Pham
parent bdbc8b4a11
commit 64cef87b74
8 changed files with 175 additions and 52 deletions
@@ -281,10 +281,11 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
controller.openMailbox(context, mailboxNode.item)) controller.openMailbox(context, mailboxNode.item))
..addOnExpandFolderActionClick((mailboxNode) => ..addOnExpandFolderActionClick((mailboxNode) =>
controller.toggleMailboxFolder(mailboxNode)) controller.toggleMailboxFolder(mailboxNode))
..adOnMenuActionClick((position, mailboxNode) => ..addOnMenuActionClick((position, mailboxNode) =>
_openMailboxMenuAction(context, position, mailboxNode.item)) _openMailboxMenuAction(context, position, mailboxNode.item))
..addOnSelectMailboxFolderClick((mailboxNode) => ..addOnSelectMailboxFolderClick((mailboxNode) =>
controller.selectMailboxNode(mailboxNode))) controller.selectMailboxNode(mailboxNode))
..addOnDragItemAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailbox))
.build()), .build()),
children: _buildListChildTileWidget(context, mailboxNode) children: _buildListChildTileWidget(context, mailboxNode)
).build() ).build()
@@ -292,10 +293,11 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value) mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value)
..addOnOpenMailboxFolderClick((mailboxNode) => ..addOnOpenMailboxFolderClick((mailboxNode) =>
controller.openMailbox(context, mailboxNode.item)) controller.openMailbox(context, mailboxNode.item))
..adOnMenuActionClick((position, mailboxNode) => ..addOnMenuActionClick((position, mailboxNode) =>
_openMailboxMenuAction(context, position, mailboxNode.item)) _openMailboxMenuAction(context, position, mailboxNode.item))
..addOnSelectMailboxFolderClick((mailboxNode) => ..addOnSelectMailboxFolderClick((mailboxNode) =>
controller.selectMailboxNode(mailboxNode))) controller.selectMailboxNode(mailboxNode))
..addOnDragItemAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailbox))
.build()) .build())
).toList() ?? <Widget>[]; ).toList() ?? <Widget>[];
} }
@@ -361,6 +363,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
_responsiveUtils, _responsiveUtils,
listMailbox[index], listMailbox[index],
lastMailbox: controller.listMailboxSearched.last) lastMailbox: controller.listMailboxSearched.last)
..addOnDragItemAccepted(controller.mailboxDashBoardController.dragSelectedMultipleEmailToMailbox)
..addOnOpenMailboxAction((mailbox) => controller.openMailbox(context, mailbox)) ..addOnOpenMailboxAction((mailbox) => controller.openMailbox(context, mailbox))
..addOnMenuActionClick((position, mailbox) => _openMailboxMenuAction(context, position, mailbox)) ..addOnMenuActionClick((position, mailbox) => _openMailboxMenuAction(context, position, mailbox))
..addOnSelectMailboxActionClick((mailbox) => controller.selectMailboxSearched(context, mailbox))) ..addOnSelectMailboxActionClick((mailbox) => controller.selectMailboxSearched(context, mailbox)))
@@ -14,6 +14,7 @@ typedef OnExpandFolderActionClick = void Function(MailboxNode);
typedef OnOpenMailboxFolderClick = void Function(MailboxNode); typedef OnOpenMailboxFolderClick = void Function(MailboxNode);
typedef OnSelectMailboxFolderClick = void Function(MailboxNode); typedef OnSelectMailboxFolderClick = void Function(MailboxNode);
typedef OnMenuActionClick = void Function(RelativeRect, MailboxNode); typedef OnMenuActionClick = void Function(RelativeRect, MailboxNode);
typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox);
class MailBoxFolderTileBuilder { class MailBoxFolderTileBuilder {
@@ -33,6 +34,7 @@ class MailBoxFolderTileBuilder {
OnOpenMailboxFolderClick? _onOpenMailboxFolderClick; OnOpenMailboxFolderClick? _onOpenMailboxFolderClick;
OnSelectMailboxFolderClick? _onSelectMailboxFolderClick; OnSelectMailboxFolderClick? _onSelectMailboxFolderClick;
OnMenuActionClick? _onMenuActionClick; OnMenuActionClick? _onMenuActionClick;
OnDragItemAccepted? _onDragItemAccepted;
bool isHoverItem = false; bool isHoverItem = false;
@@ -62,11 +64,23 @@ class MailBoxFolderTileBuilder {
_onSelectMailboxFolderClick = onSelectMailboxFolderClick; _onSelectMailboxFolderClick = onSelectMailboxFolderClick;
} }
void adOnMenuActionClick(OnMenuActionClick onMenuActionClick) { void addOnMenuActionClick(OnMenuActionClick onMenuActionClick) {
_onMenuActionClick = onMenuActionClick; _onMenuActionClick = onMenuActionClick;
} }
Widget build() => _buildMailboxItem(); void addOnDragItemAccepted(OnDragItemAccepted onDragItemAccepted) {
_onDragItemAccepted = onDragItemAccepted;
}
Widget build() => DragTarget<List<PresentationEmail>>(
builder: (context, _, __,) {
return _buildMailboxItem();
},
onAccept: (emails) {
_onDragItemAccepted?.call(emails, _mailboxNode.item);
print(emails);
},
);
Widget _buildMailboxItem() { Widget _buildMailboxItem() {
if (mailboxDisplayed == MailboxDisplayed.mailbox) { if (mailboxDisplayed == MailboxDisplayed.mailbox) {
@@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displa
typedef OnOpenMailboxActionClick = void Function(PresentationMailbox); typedef OnOpenMailboxActionClick = void Function(PresentationMailbox);
typedef OnSelectMailboxActionClick = void Function(PresentationMailbox); typedef OnSelectMailboxActionClick = void Function(PresentationMailbox);
typedef OnOpenMenuActionClick = void Function(RelativeRect, PresentationMailbox); typedef OnOpenMenuActionClick = void Function(RelativeRect, PresentationMailbox);
typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox);
class MailboxSearchTileBuilder { class MailboxSearchTileBuilder {
@@ -28,6 +29,7 @@ class MailboxSearchTileBuilder {
OnOpenMailboxActionClick? _onOpenMailboxActionClick; OnOpenMailboxActionClick? _onOpenMailboxActionClick;
OnSelectMailboxActionClick? _onSelectMailboxActionClick; OnSelectMailboxActionClick? _onSelectMailboxActionClick;
OnOpenMenuActionClick? _onMenuActionClick; OnOpenMenuActionClick? _onMenuActionClick;
OnDragItemAccepted? _onDragItemAccepted;
MailboxSearchTileBuilder( MailboxSearchTileBuilder(
this._context, this._context,
@@ -55,12 +57,24 @@ class MailboxSearchTileBuilder {
_onMenuActionClick = onOpenMenuActionClick; _onMenuActionClick = onOpenMenuActionClick;
} }
void addOnDragItemAccepted(OnDragItemAccepted onDragItemAccepted) {
_onDragItemAccepted = onDragItemAccepted;
}
Widget build() { Widget build() {
return Theme( return Theme(
data: ThemeData( data: ThemeData(
splashColor: Colors.transparent, splashColor: Colors.transparent,
highlightColor: Colors.transparent), highlightColor: Colors.transparent),
child: _buildMailboxItem() child: DragTarget<List<PresentationEmail>>(
builder: (context, _, __,) {
return _buildMailboxItem();
},
onAccept: (emails) {
_onDragItemAccepted?.call(emails, _presentationMailbox);
print(emails.first.preview);
},
),
); );
} }
@@ -73,21 +87,21 @@ class MailboxSearchTileBuilder {
child: Opacity( child: Opacity(
opacity: _presentationMailbox.isActivated ? 1.0 : 0.3, opacity: _presentationMailbox.isActivated ? 1.0 : 0.3,
child: InkWell( child: InkWell(
onTap: () {}, onTap: () {},
onHover: (value) => setState(() => isHoverItem = value), onHover: (value) => setState(() => isHoverItem = value),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: backgroundColorItem), color: backgroundColorItem),
child: ListTile( child: ListTile(
contentPadding: const EdgeInsets.only(left: 8), contentPadding: const EdgeInsets.only(left: 8),
onTap: () => _onOpenMailboxActionClick?.call(_presentationMailbox), onTap: () => _onOpenMailboxActionClick?.call(_presentationMailbox),
leading: _buildLeadingIcon(), leading: _buildLeadingIcon(),
title: _buildTitleItem(), title: _buildTitleItem(),
subtitle: _buildSubtitleItem(), subtitle: _buildSubtitleItem(),
trailing: _buildMenuIcon(), trailing: _buildMenuIcon(),
), ),
) )
), ),
), ),
); );
@@ -74,6 +74,7 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_e
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart'; import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart'; import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -650,6 +651,37 @@ class MailboxDashBoardController extends ReloadableController {
} }
} }
void dragSelectedMultipleEmailToMailbox(
List<PresentationEmail> listEmails,
PresentationMailbox destinationMailbox
) async {
if (accountId.value != null && selectedMailbox.value != null) {
if (destinationMailbox.isTrash) {
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
listEmails.listEmailIds,
selectedMailbox.value!.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToTrash));
} else if (destinationMailbox.isSpam) {
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
listEmails.listEmailIds,
selectedMailbox.value!.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToSpam));
} else {
_moveSelectedEmailMultipleToMailboxAction(accountId.value!, MoveToMailboxRequest(
listEmails.listEmailIds,
selectedMailbox.value!.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToMailbox,
destinationPath: destinationMailbox.mailboxPath));
}
}
}
void _moveSelectedEmailMultipleToMailboxAction( void _moveSelectedEmailMultipleToMailboxAction(
AccountId accountId, AccountId accountId,
MoveToMailboxRequest moveRequest MoveToMailboxRequest moveRequest
@@ -672,6 +704,9 @@ class MailboxDashBoardController extends ReloadableController {
destinationMailboxId = success.destinationMailboxId; destinationMailboxId = success.destinationMailboxId;
moveAction = success.moveAction; moveAction = success.moveAction;
emailActionType = success.emailActionType; emailActionType = success.emailActionType;
if (Get.isRegistered<ThreadController>()){
Get.find<ThreadController>().refreshEmailChanges(currentEmailState: success.currentEmailState);
}
} else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) { } else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
destinationPath = success.destinationPath; destinationPath = success.destinationPath;
movedEmailIds = success.movedListEmailId; movedEmailIds = success.movedListEmailId;
@@ -303,25 +303,25 @@ class ThreadController extends BaseController {
if (viewState is Either) { if (viewState is Either) {
viewState.map((success) { viewState.map((success) {
if (success is MarkAsEmailReadSuccess) { if (success is MarkAsEmailReadSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is MoveToMailboxSuccess) { } else if (success is MoveToMailboxSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is MarkAsStarEmailSuccess) { } else if (success is MarkAsStarEmailSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is DeleteEmailPermanentlySuccess) { } else if (success is DeleteEmailPermanentlySuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is SaveEmailAsDraftsSuccess) { } else if (success is SaveEmailAsDraftsSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is RemoveEmailDraftsSuccess) { } else if (success is RemoveEmailDraftsSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is SendEmailSuccess) { } else if (success is SendEmailSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is UpdateEmailDraftsSuccess) { } else if (success is UpdateEmailDraftsSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is MarkAsMailboxReadAllSuccess) { } else if (success is MarkAsMailboxReadAllSuccess) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} else if (success is MarkAsMailboxReadHasSomeEmailFailure) { } else if (success is MarkAsMailboxReadHasSomeEmailFailure) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} }
}); });
} }
@@ -424,8 +424,8 @@ class ThreadController extends BaseController {
} }
} }
void _refreshEmailChanges({jmap.State? currentEmailState}) { void refreshEmailChanges({jmap.State? currentEmailState}) {
log('ThreadController::_refreshEmailChanges(): currentEmailState: $currentEmailState'); log('ThreadController::refreshEmailChanges(): currentEmailState: $currentEmailState');
if (isSearchActive()) { if (isSearchActive()) {
if (_accountId != null && searchQuery != null) { if (_accountId != null && searchQuery != null) {
final limit = emailList.isNotEmpty final limit = emailList.isNotEmpty
@@ -436,7 +436,7 @@ class ThreadController extends BaseController {
} }
} else { } else {
final newEmailState = currentEmailState ?? _currentEmailState; final newEmailState = currentEmailState ?? _currentEmailState;
log('ThreadController::_refreshEmailChanges(): newEmailState: $newEmailState'); log('ThreadController::refreshEmailChanges(): newEmailState: $newEmailState');
if (_accountId != null && newEmailState != null) { if (_accountId != null && newEmailState != null) {
consumeState(_refreshChangesEmailsInMailboxInteractor.execute( consumeState(_refreshChangesEmailsInMailboxInteractor.execute(
_accountId!, _accountId!,
@@ -575,7 +575,7 @@ class ThreadController extends BaseController {
message: message, message: message,
icon: readActions == ReadActions.markAsUnread ? _imagePaths.icUnreadToast : _imagePaths.icReadToast); icon: readActions == ReadActions.markAsUnread ? _imagePaths.icUnreadToast : _imagePaths.icReadToast);
} }
_refreshEmailChanges(currentEmailState: currentEmailState); refreshEmailChanges(currentEmailState: currentEmailState);
} }
void _markAsReadSelectedMultipleEmailFailure(Failure failure) { void _markAsReadSelectedMultipleEmailFailure(Failure failure) {
@@ -732,7 +732,7 @@ class ThreadController extends BaseController {
); );
} }
_refreshEmailChanges(currentEmailState: currentEmailState); refreshEmailChanges(currentEmailState: currentEmailState);
} }
void moveSelectedMultipleEmailToTrash( void moveSelectedMultipleEmailToTrash(
@@ -820,7 +820,7 @@ class ThreadController extends BaseController {
} }
void _markAsStarEmailSuccess(MarkAsStarEmailSuccess success) { void _markAsStarEmailSuccess(MarkAsStarEmailSuccess success) {
_refreshEmailChanges(currentEmailState: success.currentEmailState); refreshEmailChanges(currentEmailState: success.currentEmailState);
} }
void markAsStarSelectedMultipleEmail( void markAsStarSelectedMultipleEmail(
@@ -861,7 +861,7 @@ class ThreadController extends BaseController {
icon: markStarAction == MarkStarAction.unMarkStar ? _imagePaths.icUnStar : _imagePaths.icStar); icon: markStarAction == MarkStarAction.unMarkStar ? _imagePaths.icUnStar : _imagePaths.icStar);
} }
_refreshEmailChanges(currentEmailState: currentEmailState); refreshEmailChanges(currentEmailState: currentEmailState);
} }
void _markAsStarMultipleEmailFailure(Failure failure) { void _markAsStarMultipleEmailFailure(Failure failure) {
@@ -1316,7 +1316,7 @@ class ThreadController extends BaseController {
icon: _imagePaths.icDeleteToast); icon: _imagePaths.icDeleteToast);
} }
_refreshEmailChanges(currentEmailState: currentEmailState); refreshEmailChanges(currentEmailState: currentEmailState);
} }
void _emptyTrashFolderAction() { void _emptyTrashFolderAction() {
@@ -332,7 +332,10 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
key: const PageStorageKey('list_presentation_email_in_threads'), key: const PageStorageKey('list_presentation_email_in_threads'),
itemExtent: _getItemExtent(context), itemExtent: _getItemExtent(context),
itemCount: listPresentationEmail.length, itemCount: listPresentationEmail.length,
itemBuilder: (context, index) => Obx(() => (EmailTileBuilder( itemBuilder: (context, index) =>
Draggable<List<PresentationEmail>>(
data: [listPresentationEmail[index]],
child: Obx(() => (EmailTileBuilder(
context, context,
listPresentationEmail[index], listPresentationEmail[index],
controller.mailboxDashBoardController.currentSelectMode.value, controller.mailboxDashBoardController.currentSelectMode.value,
@@ -340,21 +343,71 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
controller.searchQuery, controller.searchQuery,
mailboxCurrent: controller.searchController.isSearchEmailRunning mailboxCurrent: controller.searchController.isSearchEmailRunning
? listPresentationEmail[index].findMailboxContain( ? listPresentationEmail[index].findMailboxContain(
controller.mailboxDashBoardController.mapMailboxById) controller.mailboxDashBoardController.mapMailboxById)
: controller.currentMailbox, : controller.currentMailbox,
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue) advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue)
..addOnPressEmailActionClick((action, email) => ..addOnPressEmailActionClick((action, email) =>
controller.pressEmailAction( controller.pressEmailAction(
context, context,
action, action,
email, email,
mailboxContain: controller.searchController.isSearchEmailRunning mailboxContain: controller.searchController.isSearchEmailRunning
? email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById) ? email.findMailboxContain(controller.mailboxDashBoardController.mapMailboxById)
: controller.currentMailbox)) : controller.currentMailbox))
..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context) ..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context)
? controller.openContextMenuAction(context, _contextMenuActionTile(context, email)) ? controller.openContextMenuAction(context, _contextMenuActionTile(context, email))
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))) : controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email))))
.build())) .build()),
feedback: _buildFeedBackWidget(),
childWhenDragging: (EmailTileBuilder(
context,
listPresentationEmail[index],
controller.mailboxDashBoardController.currentSelectMode.value,
controller.searchController.searchState.value.searchStatus,
controller.searchQuery,
mailboxCurrent: controller.searchController.isSearchEmailRunning
? listPresentationEmail[index].findMailboxContain(
controller.mailboxDashBoardController.mapMailboxById)
: controller.currentMailbox,
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue,
isDrag: true))
.build(),
dragAnchorStrategy: pointerDragAnchorStrategy,
))
);
}
Widget _buildFeedBackWidget() {
return SizedBox(
height: 60,
child: Material(
borderRadius: BorderRadius.circular(10),
color: AppColor.colorTextButton,
child: Padding(
padding: const EdgeInsets.all(16),
child: Row(
children: [
SvgPicture.asset(
_imagePaths.icFilterMessageAll,
width: 24,
height: 24,
fit: BoxFit.fill,
color: Colors.white,
),
const SizedBox(width: 10),
const Text(
'Move 1 conversation',
overflow: TextOverflow.clip,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
),
maxLines: 1,
),
],
),
),
),
); );
} }
@@ -17,6 +17,7 @@ class EmailTileBuilder with BaseEmailItemTile {
final bool advancedSearchActivated; final bool advancedSearchActivated;
final EdgeInsets? padding; final EdgeInsets? padding;
final EdgeInsets? paddingDivider; final EdgeInsets? paddingDivider;
final bool isDrag;
OnPressEmailActionClick? _emailActionClick; OnPressEmailActionClick? _emailActionClick;
@@ -31,6 +32,7 @@ class EmailTileBuilder with BaseEmailItemTile {
this.mailboxCurrent, this.mailboxCurrent,
this.padding, this.padding,
this.paddingDivider, this.paddingDivider,
this.isDrag = false,
} }
); );
@@ -19,6 +19,7 @@ class EmailTileBuilder with BaseEmailItemTile {
final bool advancedSearchActivated; final bool advancedSearchActivated;
final EdgeInsets? padding; final EdgeInsets? padding;
final EdgeInsets? paddingDivider; final EdgeInsets? paddingDivider;
final bool isDrag;
OnPressEmailActionClick? _emailActionClick; OnPressEmailActionClick? _emailActionClick;
OnMoreActionClick? _onMoreActionClick; OnMoreActionClick? _onMoreActionClick;
@@ -37,6 +38,7 @@ class EmailTileBuilder with BaseEmailItemTile {
this.mailboxCurrent, this.mailboxCurrent,
this.padding, this.padding,
this.paddingDivider, this.paddingDivider,
this.isDrag = false,
} }
); );
@@ -74,8 +76,8 @@ class EmailTileBuilder with BaseEmailItemTile {
return Container( return Container(
margin: const EdgeInsets.only(top: 3), margin: const EdgeInsets.only(top: 3),
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.symmetric(vertical: 8),
decoration: _selectModeAll == SelectMode.ACTIVE && decoration: (_selectModeAll == SelectMode.ACTIVE &&
_presentationEmail.selectMode == SelectMode.ACTIVE _presentationEmail.selectMode == SelectMode.ACTIVE) || isDrag
? BoxDecoration( ? BoxDecoration(
borderRadius: BorderRadius.circular(14), borderRadius: BorderRadius.circular(14),
color: AppColor.colorItemEmailSelectedDesktop) color: AppColor.colorItemEmailSelectedDesktop)
@@ -86,8 +88,8 @@ class EmailTileBuilder with BaseEmailItemTile {
return Container( return Container(
margin: const EdgeInsets.only(top: 3, left: 16, right: 16), margin: const EdgeInsets.only(top: 3, left: 16, right: 16),
padding: const EdgeInsets.only(bottom: 8, right: 8, top: 8), padding: const EdgeInsets.only(bottom: 8, right: 8, top: 8),
decoration: _selectModeAll == SelectMode.ACTIVE && decoration: (_selectModeAll == SelectMode.ACTIVE &&
_presentationEmail.selectMode == SelectMode.ACTIVE _presentationEmail.selectMode == SelectMode.ACTIVE) || isDrag
? BoxDecoration( ? BoxDecoration(
borderRadius: BorderRadius.circular(14), borderRadius: BorderRadius.circular(14),
color: AppColor.colorItemEmailSelectedDesktop) color: AppColor.colorItemEmailSelectedDesktop)