TF-1710 Implement delete all spam emails action
(cherry picked from commit 9eda27e10066174191059e06af26718f8645d955)
This commit is contained in:
@@ -186,7 +186,7 @@ class ConfirmDialogBuilder {
|
|||||||
)),
|
)),
|
||||||
if (_iconWidget != null)
|
if (_iconWidget != null)
|
||||||
Container(
|
Container(
|
||||||
margin: _marginIcon ?? const EdgeInsets.only(top: 24),
|
margin: _marginIcon ?? EdgeInsets.zero,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
child: _iconWidget,
|
child: _iconWidget,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -98,4 +98,64 @@ mixin MailboxActionHandlerMixin {
|
|||||||
.build()));
|
.build()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void emptySpamAction(
|
||||||
|
BuildContext context,
|
||||||
|
PresentationMailbox mailbox,
|
||||||
|
MailboxDashBoardController dashboardController
|
||||||
|
) {
|
||||||
|
if (dashboardController.isDrawerOpen) {
|
||||||
|
dashboardController.closeMailboxMenuDrawer();
|
||||||
|
}
|
||||||
|
|
||||||
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
|
final appToast = Get.find<AppToast>();
|
||||||
|
|
||||||
|
if (responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
|
(ConfirmationDialogActionSheetBuilder(context)
|
||||||
|
..messageText(AppLocalizations.of(context).emptySpamMessageDialog)
|
||||||
|
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
||||||
|
..onConfirmAction(AppLocalizations.of(context).delete_all, () {
|
||||||
|
popBack();
|
||||||
|
if (mailbox.countEmails > 0) {
|
||||||
|
dashboardController.emptySpamFolderAction(spamFolderId: mailbox.id);
|
||||||
|
} else {
|
||||||
|
appToast.showToastWarningMessage(
|
||||||
|
context,
|
||||||
|
AppLocalizations.of(context).noEmailInYourCurrentMailbox
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
.show();
|
||||||
|
} else {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||||
|
builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
|
||||||
|
..key(const Key('confirm_dialog_empty_spam'))
|
||||||
|
..title(AppLocalizations.of(context).emptySpamFolder)
|
||||||
|
..content(AppLocalizations.of(context).emptySpamMessageDialog)
|
||||||
|
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
|
||||||
|
..colorConfirmButton(AppColor.colorConfirmActionDialog)
|
||||||
|
..styleTextConfirmButton(const TextStyle(
|
||||||
|
fontSize: 17,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: AppColor.colorActionDeleteConfirmDialog))
|
||||||
|
..onCloseButtonAction(popBack)
|
||||||
|
..onConfirmButtonAction(AppLocalizations.of(context).delete_all, () {
|
||||||
|
popBack();
|
||||||
|
if (mailbox.countEmails > 0) {
|
||||||
|
dashboardController.emptySpamFolderAction(spamFolderId: mailbox.id);
|
||||||
|
} else {
|
||||||
|
appToast.showToastWarningMessage(
|
||||||
|
context,
|
||||||
|
AppLocalizations.of(context).noEmailInYourCurrentMailbox
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack)
|
||||||
|
).build()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -68,6 +68,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||||
import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_bindings.dart';
|
import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/state/empty_spam_folder_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
||||||
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_multiple_email_read_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_mailbox_state.dart';
|
||||||
@@ -246,6 +247,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
} else if (success is UpdateEmailDraftsSuccess) {
|
} else if (success is UpdateEmailDraftsSuccess) {
|
||||||
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
|
} else if (success is EmptySpamFolderSuccess) {
|
||||||
|
_refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -931,6 +934,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
case MailboxActions.emptyTrash:
|
case MailboxActions.emptyTrash:
|
||||||
emptyTrashAction(context, mailbox, mailboxDashBoardController);
|
emptyTrashAction(context, mailbox, mailboxDashBoardController);
|
||||||
break;
|
break;
|
||||||
|
case MailboxActions.emptySpam:
|
||||||
|
emptySpamAction(context, mailbox, mailboxDashBoardController);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
|
|||||||
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart';
|
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/repository/thread_repository_impl.dart';
|
import 'package:tmail_ui_user/features/thread/data/repository/thread_repository_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart';
|
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_spam_folder_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/get_email_by_id_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/get_email_by_id_interactor.dart';
|
||||||
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_multiple_email_read_interactor.dart';
|
||||||
@@ -181,6 +182,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<UpdateSendingEmailInteractor>(),
|
Get.find<UpdateSendingEmailInteractor>(),
|
||||||
Get.find<GetAllSendingEmailInteractor>(),
|
Get.find<GetAllSendingEmailInteractor>(),
|
||||||
Get.find<StoreSessionInteractor>(),
|
Get.find<StoreSessionInteractor>(),
|
||||||
|
Get.find<EmptySpamFolderInteractor>(),
|
||||||
));
|
));
|
||||||
Get.put(AdvancedFilterController());
|
Get.put(AdvancedFilterController());
|
||||||
}
|
}
|
||||||
@@ -313,6 +315,11 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.find<ThreadRepository>(),
|
Get.find<ThreadRepository>(),
|
||||||
Get.find<MailboxRepository>(),
|
Get.find<MailboxRepository>(),
|
||||||
Get.find<EmailRepository>()));
|
Get.find<EmailRepository>()));
|
||||||
|
Get.lazyPut(() => EmptySpamFolderInteractor(
|
||||||
|
Get.find<ThreadRepository>(),
|
||||||
|
Get.find<MailboxRepository>(),
|
||||||
|
Get.find<EmailRepository>()
|
||||||
|
));
|
||||||
Get.lazyPut(() => GetAppDashboardConfigurationInteractor(
|
Get.lazyPut(() => GetAppDashboardConfigurationInteractor(
|
||||||
Get.find<AppConfigLoader>()));
|
Get.find<AppConfigLoader>()));
|
||||||
Get.lazyPut(() => GetEmailByIdInteractor(
|
Get.lazyPut(() => GetEmailByIdInteractor(
|
||||||
|
|||||||
+29
@@ -108,11 +108,13 @@ import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_
|
|||||||
import 'package:tmail_ui_user/features/session/domain/usecases/store_session_interactor.dart';
|
import 'package:tmail_ui_user/features/session/domain/usecases/store_session_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/state/empty_spam_folder_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/get_email_by_id_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/get_email_by_id_state.dart';
|
||||||
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_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/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_mailbox_state.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_spam_folder_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/get_email_by_id_interactor.dart';
|
import 'package:tmail_ui_user/features/thread/domain/usecases/get_email_by_id_interactor.dart';
|
||||||
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_multiple_email_read_interactor.dart';
|
||||||
@@ -161,6 +163,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
final UpdateSendingEmailInteractor _updateSendingEmailInteractor;
|
final UpdateSendingEmailInteractor _updateSendingEmailInteractor;
|
||||||
final GetAllSendingEmailInteractor _getAllSendingEmailInteractor;
|
final GetAllSendingEmailInteractor _getAllSendingEmailInteractor;
|
||||||
final StoreSessionInteractor _storeSessionInteractor;
|
final StoreSessionInteractor _storeSessionInteractor;
|
||||||
|
final EmptySpamFolderInteractor _emptySpamFolderInteractor;
|
||||||
|
|
||||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||||
UpdateVacationInteractor? _updateVacationInteractor;
|
UpdateVacationInteractor? _updateVacationInteractor;
|
||||||
@@ -234,6 +237,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
this._updateSendingEmailInteractor,
|
this._updateSendingEmailInteractor,
|
||||||
this._getAllSendingEmailInteractor,
|
this._getAllSendingEmailInteractor,
|
||||||
this._storeSessionInteractor,
|
this._storeSessionInteractor,
|
||||||
|
this._emptySpamFolderInteractor,
|
||||||
) : super(
|
) : super(
|
||||||
getAuthenticatedAccountInteractor,
|
getAuthenticatedAccountInteractor,
|
||||||
updateAuthenticationAccountInteractor
|
updateAuthenticationAccountInteractor
|
||||||
@@ -342,6 +346,8 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
_handleGetAllSendingEmailsSuccess(success);
|
_handleGetAllSendingEmailsSuccess(success);
|
||||||
} else if (success is UpdateSendingEmailSuccess) {
|
} else if (success is UpdateSendingEmailSuccess) {
|
||||||
_handleUpdateSendingEmailSuccess(success);
|
_handleUpdateSendingEmailSuccess(success);
|
||||||
|
} else if (success is EmptySpamFolderSuccess) {
|
||||||
|
_emptySpamFolderSuccess(success);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1950,6 +1956,29 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
consumeState(_storeSessionInteractor.execute(session));
|
consumeState(_storeSessionInteractor.execute(session));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void emptySpamFolderAction({Function? onCancelSelectionEmail, MailboxId? spamFolderId}) {
|
||||||
|
onCancelSelectionEmail?.call();
|
||||||
|
|
||||||
|
final spamMailboxId = spamFolderId ?? mapDefaultMailboxIdByRole[PresentationMailbox.roleSpam];
|
||||||
|
if (sessionCurrent != null && accountId.value != null && spamMailboxId != null) {
|
||||||
|
consumeState(
|
||||||
|
_emptySpamFolderInteractor.execute(
|
||||||
|
sessionCurrent!,
|
||||||
|
accountId.value!,
|
||||||
|
spamMailboxId
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _emptySpamFolderSuccess(EmptySpamFolderSuccess success) {
|
||||||
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
|
_appToast.showToastSuccessMessage(
|
||||||
|
currentOverlayContext!,
|
||||||
|
AppLocalizations.of(currentContext!).toast_message_empty_trash_folder_success);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
|
|||||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
|
import 'package:tmail_ui_user/features/thread/domain/state/empty_spam_folder_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/empty_trash_folder_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/state/get_email_by_id_state.dart';
|
import 'package:tmail_ui_user/features/thread/domain/state/get_email_by_id_state.dart';
|
||||||
@@ -334,7 +335,7 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
_refreshEmailChanges(currentEmailState: success.currentEmailState);
|
_refreshEmailChanges(currentEmailState: success.currentEmailState);
|
||||||
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
||||||
_refreshEmailChanges(currentEmailState: success.currentEmailState);
|
_refreshEmailChanges(currentEmailState: success.currentEmailState);
|
||||||
} else if (success is EmptyTrashFolderSuccess) {
|
} else if (success is EmptyTrashFolderSuccess || success is EmptySpamFolderSuccess) {
|
||||||
refreshAllEmail();
|
refreshAllEmail();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user