TF-153 Combine moveToMailbox and moveToTrash to moveToMailbox using EmailActionType object
This commit is contained in:
@@ -29,7 +29,6 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/load_more_emails_i
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_email_read_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/mark_as_star_multiple_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_trash_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_all_emails_in_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
||||
@@ -56,7 +55,6 @@ class ThreadBindings extends BaseBindings {
|
||||
Get.find<LoadMoreEmailsInMailboxInteractor>(),
|
||||
Get.find<SearchEmailInteractor>(),
|
||||
Get.find<SearchMoreEmailInteractor>(),
|
||||
Get.find<MoveMultipleEmailToTrashInteractor>(),
|
||||
Get.find<DeleteMultipleEmailsPermanentlyInteractor>(),
|
||||
Get.find<EmptyTrashFolderInteractor>(),
|
||||
Get.find<MarkAsEmailReadInteractor>(),
|
||||
@@ -98,7 +96,6 @@ class ThreadBindings extends BaseBindings {
|
||||
Get.lazyPut(() => LoadMoreEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => SearchEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => SearchMoreEmailInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => MoveMultipleEmailToTrashInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => DeleteMultipleEmailsPermanentlyInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => EmptyTrashFolderInteractor(Get.find<ThreadRepository>()));
|
||||
Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find<EmailRepository>()));
|
||||
|
||||
@@ -20,15 +20,15 @@ import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/save_email_as_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts_state.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_trash_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/delete_email_permanently_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails_permanently_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/move_to_trash_state.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
|
||||
@@ -46,7 +46,6 @@ import 'package:tmail_ui_user/features/thread/domain/state/load_more_emails_stat
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_multiple_email_read_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/mark_as_star_multiple_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_trash_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/refresh_changes_all_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
|
||||
@@ -56,7 +55,6 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/load_more_emails_i
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_email_read_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_trash_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_all_emails_in_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
|
||||
@@ -85,7 +83,6 @@ class ThreadController extends BaseController {
|
||||
final LoadMoreEmailsInMailboxInteractor _loadMoreEmailsInMailboxInteractor;
|
||||
final SearchEmailInteractor _searchEmailInteractor;
|
||||
final SearchMoreEmailInteractor _searchMoreEmailInteractor;
|
||||
final MoveMultipleEmailToTrashInteractor _moveMultipleEmailToTrashInteractor;
|
||||
final DeleteMultipleEmailsPermanentlyInteractor _deleteMultipleEmailsPermanentlyInteractor;
|
||||
final EmptyTrashFolderInteractor _emptyTrashFolderInteractor;
|
||||
final MarkAsEmailReadInteractor _markAsEmailReadInteractor;
|
||||
@@ -123,7 +120,6 @@ class ThreadController extends BaseController {
|
||||
this._loadMoreEmailsInMailboxInteractor,
|
||||
this._searchEmailInteractor,
|
||||
this._searchMoreEmailInteractor,
|
||||
this._moveMultipleEmailToTrashInteractor,
|
||||
this._deleteMultipleEmailsPermanentlyInteractor,
|
||||
this._emptyTrashFolderInteractor,
|
||||
this._markAsEmailReadInteractor,
|
||||
@@ -150,14 +146,11 @@ class ThreadController extends BaseController {
|
||||
super.onReady();
|
||||
mailboxDashBoardController.viewState.listen((state) {
|
||||
state.map((success) {
|
||||
log('ThreadController::onReady(): ${success.runtimeType}');
|
||||
|
||||
if (success is SearchEmailNewQuery){
|
||||
mailboxDashBoardController.clearState();
|
||||
_searchEmail();
|
||||
} else if (success is MarkAsEmailReadSuccess
|
||||
|| success is MoveToMailboxSuccess
|
||||
|| success is MoveToTrashSuccess
|
||||
|| success is MarkAsStarEmailSuccess
|
||||
|| success is DeleteEmailPermanentlySuccess
|
||||
|| success is SaveEmailAsDraftsSuccess
|
||||
@@ -240,9 +233,6 @@ class ThreadController extends BaseController {
|
||||
} else if (success is MarkAsStarMultipleEmailAllSuccess
|
||||
|| success is MarkAsStarMultipleEmailHasSomeEmailFailure) {
|
||||
_markAsStarMultipleEmailSuccess(success);
|
||||
} else if (success is MoveMultipleEmailToTrashAllSuccess
|
||||
|| success is MoveMultipleEmailToTrashHasSomeEmailFailure) {
|
||||
_moveSelectedMultipleEmailToTrashSuccess(success);
|
||||
} else if (success is DeleteMultipleEmailsPermanentlyAllSuccess
|
||||
|| success is DeleteMultipleEmailsPermanentlyHasSomeEmailFailure) {
|
||||
_deleteMultipleEmailsPermanentlySuccess(success);
|
||||
@@ -572,26 +562,26 @@ class ThreadController extends BaseController {
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.role == PresentationMailbox.roleTrash) {
|
||||
_moveSelectedEmailMultipleToTrash(_accountId!, MoveToTrashRequest(
|
||||
_moveSelectedEmailMultipleToTrash(_accountId!, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moveToTrash));
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else {
|
||||
_moveSelectedEmailMultipleToMailbox(
|
||||
_accountId!,
|
||||
MoveRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moveTo,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
_moveSelectedEmailMultipleToMailbox(_accountId!, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _moveSelectedEmailMultipleToMailbox(AccountId accountId, MoveRequest moveRequest) {
|
||||
void _moveSelectedEmailMultipleToMailbox(AccountId accountId, MoveToMailboxRequest moveRequest) {
|
||||
cancelSelectEmail();
|
||||
consumeState(_moveMultipleEmailToMailboxInteractor.execute(accountId, moveRequest));
|
||||
}
|
||||
@@ -604,6 +594,7 @@ class ThreadController extends BaseController {
|
||||
MailboxId? currentMailboxId;
|
||||
MailboxId? destinationMailboxId;
|
||||
MoveAction? moveAction;
|
||||
EmailActionType? emailActionType;
|
||||
|
||||
if (success is MoveMultipleEmailToMailboxAllSuccess) {
|
||||
destinationPath = success.destinationPath;
|
||||
@@ -611,29 +602,31 @@ class ThreadController extends BaseController {
|
||||
currentMailboxId = success.currentMailboxId;
|
||||
destinationMailboxId = success.destinationMailboxId;
|
||||
moveAction = success.moveAction;
|
||||
emailActionType = success.emailActionType;
|
||||
} else if (success is MoveMultipleEmailToMailboxHasSomeEmailFailure) {
|
||||
destinationPath = success.destinationPath;
|
||||
movedEmailIds = success.movedListEmailId;
|
||||
currentMailboxId = success.currentMailboxId;
|
||||
destinationMailboxId = success.destinationMailboxId;
|
||||
moveAction = success.moveAction;
|
||||
emailActionType = success.emailActionType;
|
||||
}
|
||||
|
||||
if (currentContext != null && currentOverlayContext != null
|
||||
&& destinationPath != null && moveAction == MoveAction.moveTo) {
|
||||
&& emailActionType != null && moveAction == MoveAction.moving) {
|
||||
_appToast.showToastWithAction(
|
||||
currentOverlayContext!,
|
||||
AppLocalizations.of(currentContext!).moved_to_mailbox(destinationPath),
|
||||
AppLocalizations.of(currentContext!).undo_action,
|
||||
() {
|
||||
emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: destinationPath),
|
||||
AppLocalizations.of(currentContext!).undo_action, () {
|
||||
final newCurrentMailboxId = destinationMailboxId;
|
||||
final newDestinationMailboxId = currentMailboxId;
|
||||
if (newCurrentMailboxId != null && newDestinationMailboxId != null) {
|
||||
_undoMoveSelectedMultipleEmailToMailbox(MoveRequest(
|
||||
_revertedToOriginalMailbox(MoveToMailboxRequest(
|
||||
movedEmailIds,
|
||||
newCurrentMailboxId,
|
||||
newDestinationMailboxId,
|
||||
MoveAction.undo,
|
||||
emailActionType!,
|
||||
destinationPath: destinationPath));
|
||||
}
|
||||
}
|
||||
@@ -643,67 +636,28 @@ class ThreadController extends BaseController {
|
||||
_refreshEmailChanges();
|
||||
}
|
||||
|
||||
void _undoMoveSelectedMultipleEmailToMailbox(MoveRequest moveRequest) {
|
||||
if (_accountId != null) {
|
||||
_moveSelectedEmailMultipleToMailbox(_accountId!, moveRequest);
|
||||
}
|
||||
}
|
||||
|
||||
void moveSelectedMultipleEmailToTrashAction(List<PresentationEmail> listEmail) async {
|
||||
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
|
||||
final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxId[PresentationMailbox.roleTrash];
|
||||
final trashMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleTrash);
|
||||
|
||||
if (currentMailbox != null && _accountId != null && trashMailboxId != null) {
|
||||
final listEmailIds = listEmail.map((email) => email.id).toList();
|
||||
_moveSelectedEmailMultipleToTrash(
|
||||
_accountId!,
|
||||
MoveToTrashRequest(listEmailIds, currentMailbox.id, trashMailboxId, MoveAction.moveToTrash)
|
||||
_moveSelectedEmailMultipleToTrash(_accountId!, MoveToMailboxRequest(
|
||||
listEmailIds,
|
||||
currentMailbox.id,
|
||||
trashMailboxId,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _moveSelectedEmailMultipleToTrash(AccountId accountId, MoveToTrashRequest moveRequest) {
|
||||
void _moveSelectedEmailMultipleToTrash(AccountId accountId, MoveToMailboxRequest moveRequest) {
|
||||
cancelSelectEmail();
|
||||
consumeState(_moveMultipleEmailToTrashInteractor.execute(accountId, moveRequest));
|
||||
consumeState(_moveMultipleEmailToMailboxInteractor.execute(accountId, moveRequest));
|
||||
}
|
||||
|
||||
void _moveSelectedMultipleEmailToTrashSuccess(Success success) {
|
||||
mailboxDashBoardController.dispatchState(Right(success));
|
||||
|
||||
List<EmailId> movedEmailIds = [];
|
||||
MailboxId? currentMailboxId;
|
||||
MailboxId? trashMailboxId;
|
||||
MoveAction? moveAction;
|
||||
|
||||
if (success is MoveMultipleEmailToTrashAllSuccess) {
|
||||
movedEmailIds = success.movedListEmailId;
|
||||
currentMailboxId = success.currentMailboxId;
|
||||
trashMailboxId = success.trashMailboxId;
|
||||
moveAction = success.moveAction;
|
||||
} else if (success is MoveMultipleEmailToTrashHasSomeEmailFailure) {
|
||||
movedEmailIds = success.movedListEmailId;
|
||||
currentMailboxId = success.currentMailboxId;
|
||||
trashMailboxId = success.trashMailboxId;
|
||||
moveAction = success.moveAction;
|
||||
}
|
||||
|
||||
if (currentContext != null && currentOverlayContext != null && moveAction == MoveAction.moveToTrash) {
|
||||
_appToast.showToastWithAction(
|
||||
currentOverlayContext!,
|
||||
AppLocalizations.of(currentContext!).moved_to_trash,
|
||||
AppLocalizations.of(currentContext!).undo_action,
|
||||
() {
|
||||
if (trashMailboxId != null && currentMailboxId != null) {
|
||||
_revertedToOriginalMailbox(MoveRequest(movedEmailIds, trashMailboxId, currentMailboxId, MoveAction.undo));
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
_refreshEmailChanges();
|
||||
}
|
||||
|
||||
void _revertedToOriginalMailbox(MoveRequest newMoveRequest) {
|
||||
void _revertedToOriginalMailbox(MoveToMailboxRequest newMoveRequest) {
|
||||
if (_accountId != null) {
|
||||
consumeState(_moveMultipleEmailToMailboxInteractor.execute(_accountId!, newMoveRequest));
|
||||
}
|
||||
@@ -841,11 +795,11 @@ class ThreadController extends BaseController {
|
||||
case EmailActionType.markAsUnread:
|
||||
markAsReadSelectedMultipleEmail(selectionEmail);
|
||||
break;
|
||||
case EmailActionType.markAsStar:
|
||||
case EmailActionType.markAsUnStar:
|
||||
case EmailActionType.markAsStarred:
|
||||
case EmailActionType.unMarkAsStarred:
|
||||
markAsStarSelectedMultipleEmail(selectionEmail);
|
||||
break;
|
||||
case EmailActionType.move:
|
||||
case EmailActionType.moveToMailbox:
|
||||
moveSelectedMultipleEmailToMailboxAction(selectionEmail);
|
||||
break;
|
||||
case EmailActionType.moveToTrash:
|
||||
@@ -877,13 +831,13 @@ class ThreadController extends BaseController {
|
||||
case EmailActionType.markAsUnread:
|
||||
markAsEmailRead(selectedEmail, ReadActions.markAsUnread);
|
||||
break;
|
||||
case EmailActionType.markAsStar:
|
||||
case EmailActionType.markAsStarred:
|
||||
markAsStarEmail(selectedEmail, MarkStarAction.markStar);
|
||||
break;
|
||||
case EmailActionType.markAsUnStar:
|
||||
case EmailActionType.unMarkAsStarred:
|
||||
markAsStarEmail(selectedEmail, MarkStarAction.unMarkStar);
|
||||
break;
|
||||
case EmailActionType.move:
|
||||
case EmailActionType.moveToMailbox:
|
||||
moveToMailboxAction(context, selectedEmail);
|
||||
break;
|
||||
case EmailActionType.moveToTrash:
|
||||
@@ -909,57 +863,58 @@ class ThreadController extends BaseController {
|
||||
|
||||
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
|
||||
if (destinationMailbox.role == PresentationMailbox.roleTrash) {
|
||||
_moveToTrash(accountId, MoveToTrashRequest(
|
||||
_moveToTrash(accountId, MoveToMailboxRequest(
|
||||
[email.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moveToTrash));
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash));
|
||||
} else {
|
||||
_moveToMailbox(accountId, MoveRequest(
|
||||
_moveToMailbox(accountId, MoveToMailboxRequest(
|
||||
[email.id],
|
||||
currentMailbox.id,
|
||||
destinationMailbox.id,
|
||||
MoveAction.moveTo,
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToMailbox,
|
||||
destinationPath: destinationMailbox.mailboxPath));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _moveToMailbox(AccountId accountId, MoveRequest moveRequest) {
|
||||
void _moveToMailbox(AccountId accountId, MoveToMailboxRequest moveRequest) {
|
||||
consumeState(_moveToMailboxInteractor.execute(accountId, moveRequest));
|
||||
}
|
||||
|
||||
void _moveToMailboxSuccess(Success success) {
|
||||
void _moveToMailboxSuccess(MoveToMailboxSuccess success) {
|
||||
mailboxDashBoardController.dispatchState(Right(success));
|
||||
|
||||
if (success is MoveToMailboxSuccess
|
||||
&& success.moveAction == MoveAction.moveTo
|
||||
&& currentContext != null && currentOverlayContext != null) {
|
||||
if (success.moveAction == MoveAction.moving && currentContext != null && currentOverlayContext != null) {
|
||||
_appToast.showToastWithAction(
|
||||
currentOverlayContext!,
|
||||
AppLocalizations.of(currentContext!).moved_to_mailbox(success.destinationPath ?? ''),
|
||||
AppLocalizations.of(currentContext!).undo_action,
|
||||
() {
|
||||
final newMoveRequest = MoveRequest(
|
||||
final newMoveRequest = MoveToMailboxRequest(
|
||||
[success.emailId],
|
||||
success.destinationMailboxId,
|
||||
success.currentMailboxId,
|
||||
MoveAction.undo);
|
||||
MoveAction.undo,
|
||||
success.emailActionType);
|
||||
_undoMoveToMailbox(newMoveRequest);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _undoMoveToMailbox(MoveRequest newMoveRequest) {
|
||||
void _undoMoveToMailbox(MoveToMailboxRequest newMoveRequest) {
|
||||
if (_accountId != null) {
|
||||
_moveToMailbox(_accountId!, newMoveRequest);
|
||||
}
|
||||
}
|
||||
|
||||
void _moveToTrash(AccountId accountId, MoveToTrashRequest moveRequest) {
|
||||
mailboxDashBoardController.moveToTrash(accountId, moveRequest);
|
||||
void _moveToTrash(AccountId accountId, MoveToMailboxRequest moveRequest) {
|
||||
mailboxDashBoardController.moveToMailbox(accountId, moveRequest);
|
||||
}
|
||||
|
||||
void moveToTrashAction(PresentationEmail email) async {
|
||||
@@ -968,11 +923,12 @@ class ThreadController extends BaseController {
|
||||
final trashMailboxId = mailboxDashBoardController.mapDefaultMailboxId[PresentationMailbox.roleTrash];
|
||||
|
||||
if (currentMailbox != null && accountId != null && trashMailboxId != null) {
|
||||
_moveToTrash(accountId, MoveToTrashRequest(
|
||||
_moveToTrash(accountId, MoveToMailboxRequest(
|
||||
[email.id],
|
||||
currentMailbox.id,
|
||||
trashMailboxId,
|
||||
MoveAction.moveToTrash)
|
||||
MoveAction.moving,
|
||||
EmailActionType.moveToTrash)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,12 +211,12 @@ class ThreadView extends GetWidget<ThreadController> with UserSettingPopupMenuMi
|
||||
tooltip: controller.listEmailSelected.isAllEmailStarred ? AppLocalizations.of(context).not_starred : AppLocalizations.of(context).starred,
|
||||
onTap: () => controller.pressEmailSelectionAction(
|
||||
context,
|
||||
controller.listEmailSelected.isAllEmailStarred ? EmailActionType.markAsUnStar : EmailActionType.markAsStar,
|
||||
controller.listEmailSelected.isAllEmailStarred ? EmailActionType.markAsStarred : EmailActionType.unMarkAsStarred,
|
||||
controller.listEmailSelected)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(_imagePaths.icMove, fit: BoxFit.fill),
|
||||
tooltip: AppLocalizations.of(context).move,
|
||||
onTap: () => controller.pressEmailSelectionAction(context, EmailActionType.move, controller.listEmailSelected)),
|
||||
onTap: () => controller.pressEmailSelectionAction(context, EmailActionType.moveToMailbox, controller.listEmailSelected)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(_imagePaths.icDelete, fit: BoxFit.fill),
|
||||
tooltip: controller.mailboxDashBoardController.selectedMailbox.value?.role != PresentationMailbox.roleTrash
|
||||
|
||||
-153
@@ -1,153 +0,0 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
typedef OnCloseActionClick = void Function();
|
||||
typedef OnMarkAsEmailReadActionClick = void Function(List<PresentationEmail> listEmail);
|
||||
typedef OnRemoveEmailActionClick = void Function(List<PresentationEmail> listEmail);
|
||||
typedef OnOpenContextMenuActionClick = void Function(List<PresentationEmail> listEmail);
|
||||
typedef OnOpenPopupMenuActionClick = void Function(List<PresentationEmail> listEmail, RelativeRect position);
|
||||
|
||||
class AppBarThreadSelectModeActiveBuilder {
|
||||
OnCloseActionClick? _onCloseActionClick;
|
||||
OnMarkAsEmailReadActionClick? _onMarkAsEmailReadActionClick;
|
||||
// OnRemoveEmailActionClick? _onRemoveEmailActionClick;
|
||||
OnOpenContextMenuActionClick? _onOpenContextMenuActionClick;
|
||||
OnOpenPopupMenuActionClick? _onOpenPopupMenuActionClick;
|
||||
|
||||
final BuildContext _context;
|
||||
final ImagePaths _imagePaths;
|
||||
final List<PresentationEmail> _listEmail;
|
||||
final ResponsiveUtils _responsiveUtils;
|
||||
|
||||
AppBarThreadSelectModeActiveBuilder(this._context, this._imagePaths, this._listEmail, this._responsiveUtils);
|
||||
|
||||
void addCloseActionClick(OnCloseActionClick onCloseActionClick) {
|
||||
_onCloseActionClick = onCloseActionClick;
|
||||
}
|
||||
|
||||
void addOnMarkAsEmailReadActionClick(OnMarkAsEmailReadActionClick onMarkAsEmailReadActionClick) {
|
||||
_onMarkAsEmailReadActionClick = onMarkAsEmailReadActionClick;
|
||||
}
|
||||
|
||||
// void addRemoveEmailActionClick(OnRemoveEmailActionClick onRemoveEmailActionClick) {
|
||||
// _onRemoveEmailActionClick = onRemoveEmailActionClick;
|
||||
// }
|
||||
|
||||
void addOpenContextMenuActionClick(OnOpenContextMenuActionClick onOpenContextMenuActionClick) {
|
||||
_onOpenContextMenuActionClick = onOpenContextMenuActionClick;
|
||||
}
|
||||
|
||||
void addOnOpenPopupMenuActionClick(OnOpenPopupMenuActionClick onOpenPopupMenuActionClick) {
|
||||
_onOpenPopupMenuActionClick = onOpenPopupMenuActionClick;
|
||||
}
|
||||
|
||||
Widget build() {
|
||||
return Container(
|
||||
key: Key('app_bar_thread_select_mode_active'),
|
||||
alignment: Alignment.topCenter,
|
||||
color: Colors.white,
|
||||
margin: EdgeInsets.zero,
|
||||
padding: EdgeInsets.only(left: 10, right: 16, top: 10, bottom: 10),
|
||||
child: MediaQuery(
|
||||
data: MediaQueryData(padding: EdgeInsets.zero),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
_buildBackButton(),
|
||||
Expanded(child: _buildCountItemSelected()),
|
||||
_buildListOptionButton(),
|
||||
]
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildCountItemSelected() {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(left: 12),
|
||||
child: Text(
|
||||
AppLocalizations.of(_context).count_email_selected(_listEmail.length),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(fontSize: 18, color: AppColor.nameUserColor, fontWeight: FontWeight.w500)));
|
||||
}
|
||||
|
||||
Widget _buildBackButton() {
|
||||
return Material(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.transparent,
|
||||
child: IconButton(
|
||||
color: AppColor.baseTextColor,
|
||||
icon: SvgPicture.asset(_imagePaths.icComposerClose, color: AppColor.baseTextColor, fit: BoxFit.fill),
|
||||
onPressed: () => {
|
||||
if (_onCloseActionClick != null) {
|
||||
_onCloseActionClick!()
|
||||
}
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
Widget _buildListOptionButton() {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
// IconButton(
|
||||
// key: Key('button_remove_email_selected'),
|
||||
// color: AppColor.baseTextColor,
|
||||
// icon: SvgPicture.asset(_imagePaths.icTrash, color: AppColor.baseTextColor, fit: BoxFit.fill),
|
||||
// onPressed: () => {
|
||||
// if (_onRemoveEmailActionClick != null) {
|
||||
// _onRemoveEmailActionClick!(_listEmail)
|
||||
// }
|
||||
// }),
|
||||
Material(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.transparent,
|
||||
child: IconButton(
|
||||
key: Key('button_unread_email_selected'),
|
||||
color: AppColor.baseTextColor,
|
||||
icon: SvgPicture.asset(_imagePaths.icEyeDisable, color: AppColor.baseTextColor, fit: BoxFit.fill),
|
||||
onPressed: () => {
|
||||
if (_onMarkAsEmailReadActionClick != null) {
|
||||
_onMarkAsEmailReadActionClick!(_listEmail)
|
||||
}
|
||||
})),
|
||||
GestureDetector(
|
||||
key: Key('button_menu_select_email'),
|
||||
onTap: () => {
|
||||
if (_onOpenContextMenuActionClick != null && _responsiveUtils.isMobile(_context)) {
|
||||
_onOpenContextMenuActionClick!(_listEmail)
|
||||
}
|
||||
},
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(8),
|
||||
child: SvgPicture.asset(
|
||||
_imagePaths.icComposerMenu,
|
||||
color: AppColor.baseTextColor,
|
||||
width: 24,
|
||||
height: 24,
|
||||
fit: BoxFit.fill),
|
||||
),
|
||||
onTapDown: (detail) {
|
||||
if (_onOpenPopupMenuActionClick != null && !_responsiveUtils.isMobile(_context)) {
|
||||
final screenSize = MediaQuery.of(_context).size;
|
||||
final offset = detail.globalPosition;
|
||||
final position = RelativeRect.fromLTRB(
|
||||
offset.dx,
|
||||
offset.dy,
|
||||
screenSize.width - offset.dx,
|
||||
screenSize.height - offset.dy,
|
||||
);
|
||||
_onOpenPopupMenuActionClick!(_listEmail, position);
|
||||
}
|
||||
})
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -107,12 +107,12 @@ class AppBarThreadWidgetBuilder {
|
||||
icon: SvgPicture.asset(_listSelectionEmail.isAllEmailStarred ? _imagePaths.icUnStar : _imagePaths.icStar, fit: BoxFit.fill),
|
||||
tooltip: _listSelectionEmail.isAllEmailStarred ? AppLocalizations.of(_context).not_starred : AppLocalizations.of(_context).starred,
|
||||
onTap: () => _onEmailSelectionAction?.call(
|
||||
_listSelectionEmail.isAllEmailStarred ? EmailActionType.markAsUnStar : EmailActionType.markAsStar,
|
||||
_listSelectionEmail.isAllEmailStarred ? EmailActionType.unMarkAsStarred : EmailActionType.markAsStarred,
|
||||
_listSelectionEmail)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(_imagePaths.icMove, fit: BoxFit.fill),
|
||||
tooltip: AppLocalizations.of(_context).move,
|
||||
onTap: () => _onEmailSelectionAction?.call(EmailActionType.move, _listSelectionEmail)),
|
||||
onTap: () => _onEmailSelectionAction?.call(EmailActionType.moveToMailbox, _listSelectionEmail)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(_imagePaths.icDelete, fit: BoxFit.fill),
|
||||
tooltip: _presentationMailbox?.role != PresentationMailbox.roleTrash
|
||||
|
||||
@@ -65,10 +65,10 @@ class BottomBarThreadSelectionWidget {
|
||||
..onPressActionClick(() {
|
||||
if (_onPressEmailSelectionActionClick != null) {
|
||||
_onPressEmailSelectionActionClick!(
|
||||
_listSelectionEmail.isAllEmailStarred ? EmailActionType.markAsUnStar : EmailActionType.markAsStar,
|
||||
_listSelectionEmail.isAllEmailStarred ? EmailActionType.unMarkAsStarred : EmailActionType.markAsStarred,
|
||||
_listSelectionEmail);
|
||||
}})
|
||||
..text(_listSelectionEmail.isAllEmailStarred ? AppLocalizations.of(_context).mark_as_unstar : AppLocalizations.of(_context).mark_as_star,
|
||||
..text(_listSelectionEmail.isAllEmailStarred ? AppLocalizations.of(_context).not_starred : AppLocalizations.of(_context).starred,
|
||||
isVertical: _responsiveUtils.isMobile(_context)))
|
||||
.build()),
|
||||
Expanded(child: (ButtonBuilder(_imagePaths.icMove)
|
||||
@@ -77,7 +77,7 @@ class BottomBarThreadSelectionWidget {
|
||||
..textStyle(TextStyle(fontSize: 12, color: AppColor.colorTextButton))
|
||||
..onPressActionClick(() {
|
||||
if (_onPressEmailSelectionActionClick != null) {
|
||||
_onPressEmailSelectionActionClick!(EmailActionType.move, _listSelectionEmail);
|
||||
_onPressEmailSelectionActionClick!(EmailActionType.moveToMailbox, _listSelectionEmail);
|
||||
}})
|
||||
..text(AppLocalizations.of(_context).move, isVertical: _responsiveUtils.isMobile(_context)))
|
||||
.build()),
|
||||
|
||||
@@ -80,7 +80,7 @@ class EmailTileBuilder {
|
||||
),
|
||||
title: Row(
|
||||
children: [
|
||||
if (_presentationEmail.isUnReadEmail())
|
||||
if (!_presentationEmail.hasRead)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 5),
|
||||
child: SvgPicture.asset(_imagePaths.icUnreadStatus, width: 9, height: 9, fit: BoxFit.fill)),
|
||||
@@ -155,7 +155,7 @@ class EmailTileBuilder {
|
||||
style: TextStyle(fontSize: 10, color: AppColor.mailboxTextColor, fontWeight: FontWeight.bold),
|
||||
)
|
||||
),
|
||||
if (_presentationEmail.isFlaggedEmail() )
|
||||
if (_presentationEmail.hasStarred)
|
||||
(ButtonBuilder(_imagePaths.icStar)
|
||||
..paddingIcon(EdgeInsets.zero)
|
||||
..size(15))
|
||||
@@ -199,18 +199,18 @@ class EmailTileBuilder {
|
||||
Container(
|
||||
padding: EdgeInsets.only(left: 16, right: 16),
|
||||
alignment: Alignment.center,
|
||||
child: _presentationEmail.isUnReadEmail()
|
||||
child: !_presentationEmail.hasRead
|
||||
? SvgPicture.asset(_imagePaths.icUnreadStatus, width: 9, height: 9, fit: BoxFit.fill)
|
||||
: SizedBox(width: 9)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
_presentationEmail.isFlaggedEmail() ? _imagePaths.icStar : _imagePaths.icUnStar,
|
||||
_presentationEmail.hasStarred ? _imagePaths.icStar : _imagePaths.icUnStar,
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill),
|
||||
tooltip: _presentationEmail.isFlaggedEmail() ? AppLocalizations.of(_context).starred : AppLocalizations.of(_context).not_starred,
|
||||
tooltip: _presentationEmail.hasStarred ? AppLocalizations.of(_context).starred : AppLocalizations.of(_context).not_starred,
|
||||
onTap: () => _emailActionClick?.call(
|
||||
_presentationEmail.isFlaggedEmail() ? EmailActionType.markAsUnStar : EmailActionType.markAsStar,
|
||||
_presentationEmail.hasStarred ? EmailActionType.unMarkAsStarred : EmailActionType.markAsStarred,
|
||||
_presentationEmail)),
|
||||
if (_selectModeAll == SelectMode.INACTIVE) SizedBox(width: 8),
|
||||
GestureDetector(
|
||||
|
||||
@@ -108,7 +108,7 @@ class EmailTileBuilder {
|
||||
child: _buildAvatarIcon(),
|
||||
),
|
||||
title: Row(children: [
|
||||
if (_presentationEmail.isUnReadEmail())
|
||||
if (!_presentationEmail.hasRead)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 5),
|
||||
child: SvgPicture.asset(_imagePaths.icUnreadStatus, width: 9, height: 9, fit: BoxFit.fill)),
|
||||
@@ -178,7 +178,7 @@ class EmailTileBuilder {
|
||||
style: TextStyle(fontSize: 10, color: AppColor.mailboxTextColor, fontWeight: FontWeight.bold),
|
||||
)
|
||||
),
|
||||
if (_presentationEmail.isFlaggedEmail() )
|
||||
if (_presentationEmail.hasStarred)
|
||||
(ButtonBuilder(_imagePaths.icStar)
|
||||
..paddingIcon(EdgeInsets.zero)
|
||||
..size(15))
|
||||
@@ -230,7 +230,7 @@ class EmailTileBuilder {
|
||||
Transform(
|
||||
transform: Matrix4.translationValues(0.0, isHoverItem ? -10.0 : 0.0, 0.0),
|
||||
child: Row(children: [
|
||||
if (_presentationEmail.isUnReadEmail())
|
||||
if (!_presentationEmail.hasRead)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 5),
|
||||
child: SvgPicture.asset(_imagePaths.icUnreadStatus, width: 9, height: 9, fit: BoxFit.fill)),
|
||||
@@ -287,7 +287,7 @@ class EmailTileBuilder {
|
||||
style: TextStyle(fontSize: 10, color: AppColor.mailboxTextColor, fontWeight: FontWeight.bold),
|
||||
)
|
||||
),
|
||||
if (_presentationEmail.isFlaggedEmail() )
|
||||
if (_presentationEmail.hasStarred)
|
||||
(ButtonBuilder(_imagePaths.icStar)
|
||||
..paddingIcon(EdgeInsets.zero)
|
||||
..size(15))
|
||||
@@ -335,18 +335,18 @@ class EmailTileBuilder {
|
||||
Container(
|
||||
padding: EdgeInsets.only(left: 16, right: 16),
|
||||
alignment: Alignment.center,
|
||||
child: _presentationEmail.isUnReadEmail()
|
||||
child: !_presentationEmail.hasRead
|
||||
? SvgPicture.asset(_imagePaths.icUnreadStatus, width: 9, height: 9, fit: BoxFit.fill)
|
||||
: SizedBox(width: 9)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
_presentationEmail.isFlaggedEmail() ? _imagePaths.icStar : _imagePaths.icUnStar,
|
||||
_presentationEmail.hasStarred ? _imagePaths.icStar : _imagePaths.icUnStar,
|
||||
width: 20,
|
||||
height: 20,
|
||||
fit: BoxFit.fill),
|
||||
tooltip: _presentationEmail.isFlaggedEmail() ? AppLocalizations.of(_context).starred : AppLocalizations.of(_context).not_starred,
|
||||
tooltip: _presentationEmail.hasStarred ? AppLocalizations.of(_context).starred : AppLocalizations.of(_context).not_starred,
|
||||
onTap: () => _emailActionClick?.call(
|
||||
_presentationEmail.isFlaggedEmail() ? EmailActionType.markAsUnStar : EmailActionType.markAsStar,
|
||||
_presentationEmail.hasStarred ? EmailActionType.unMarkAsStarred : EmailActionType.markAsStarred,
|
||||
_presentationEmail)),
|
||||
if (_selectModeAll == SelectMode.INACTIVE) SizedBox(width: 8),
|
||||
GestureDetector(
|
||||
@@ -396,15 +396,15 @@ class EmailTileBuilder {
|
||||
return Row(children: [
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
_presentationEmail.isReadEmail() ? _imagePaths.icRead : _imagePaths.icUnread,
|
||||
_presentationEmail.hasRead ? _imagePaths.icRead : _imagePaths.icUnread,
|
||||
color: AppColor.colorActionButtonHover,
|
||||
width: _responsiveUtils.isDesktop(_context) ? 16 : 14,
|
||||
height: _responsiveUtils.isDesktop(_context) ? 16 : 14,
|
||||
fit: BoxFit.fill),
|
||||
splashRadius: _responsiveUtils.isDesktop(_context) ? 15 : 10,
|
||||
tooltip: _presentationEmail.isReadEmail() ? AppLocalizations.of(_context).mark_as_unread : AppLocalizations.of(_context).mark_as_read,
|
||||
tooltip: _presentationEmail.hasRead ? AppLocalizations.of(_context).mark_as_unread : AppLocalizations.of(_context).mark_as_read,
|
||||
onTap: () => _emailActionClick?.call(
|
||||
_presentationEmail.isReadEmail() ? EmailActionType.markAsUnread : EmailActionType.markAsRead,
|
||||
_presentationEmail.hasRead ? EmailActionType.markAsUnread : EmailActionType.markAsRead,
|
||||
_presentationEmail)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
@@ -415,7 +415,7 @@ class EmailTileBuilder {
|
||||
fit: BoxFit.fill),
|
||||
splashRadius: _responsiveUtils.isDesktop(_context) ? 15 : 10,
|
||||
tooltip: AppLocalizations.of(_context).move,
|
||||
onTap: () => _emailActionClick?.call(EmailActionType.move, _presentationEmail)),
|
||||
onTap: () => _emailActionClick?.call(EmailActionType.moveToMailbox, _presentationEmail)),
|
||||
buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
_imagePaths.icDelete,
|
||||
|
||||
Reference in New Issue
Block a user