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)
|
||||
Container(
|
||||
margin: _marginIcon ?? const EdgeInsets.only(top: 24),
|
||||
margin: _marginIcon ?? EdgeInsets.zero,
|
||||
alignment: Alignment.center,
|
||||
child: _iconWidget,
|
||||
),
|
||||
|
||||
@@ -98,4 +98,64 @@ mixin MailboxActionHandlerMixin {
|
||||
.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/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/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/mark_as_multiple_email_read_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);
|
||||
} else if (success is UpdateEmailDraftsSuccess) {
|
||||
_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:
|
||||
emptyTrashAction(context, mailbox, mailboxDashBoardController);
|
||||
break;
|
||||
case MailboxActions.emptySpam:
|
||||
emptySpamAction(context, mailbox, mailboxDashBoardController);
|
||||
break;
|
||||
default:
|
||||
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/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/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/get_email_by_id_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<GetAllSendingEmailInteractor>(),
|
||||
Get.find<StoreSessionInteractor>(),
|
||||
Get.find<EmptySpamFolderInteractor>(),
|
||||
));
|
||||
Get.put(AdvancedFilterController());
|
||||
}
|
||||
@@ -313,6 +315,11 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<ThreadRepository>(),
|
||||
Get.find<MailboxRepository>(),
|
||||
Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => EmptySpamFolderInteractor(
|
||||
Get.find<ThreadRepository>(),
|
||||
Get.find<MailboxRepository>(),
|
||||
Get.find<EmailRepository>()
|
||||
));
|
||||
Get.lazyPut(() => GetAppDashboardConfigurationInteractor(
|
||||
Get.find<AppConfigLoader>()));
|
||||
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/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/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/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_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/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/get_email_by_id_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 GetAllSendingEmailInteractor _getAllSendingEmailInteractor;
|
||||
final StoreSessionInteractor _storeSessionInteractor;
|
||||
final EmptySpamFolderInteractor _emptySpamFolderInteractor;
|
||||
|
||||
GetAllVacationInteractor? _getAllVacationInteractor;
|
||||
UpdateVacationInteractor? _updateVacationInteractor;
|
||||
@@ -234,6 +237,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
this._updateSendingEmailInteractor,
|
||||
this._getAllSendingEmailInteractor,
|
||||
this._storeSessionInteractor,
|
||||
this._emptySpamFolderInteractor,
|
||||
) : super(
|
||||
getAuthenticatedAccountInteractor,
|
||||
updateAuthenticationAccountInteractor
|
||||
@@ -342,6 +346,8 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
_handleGetAllSendingEmailsSuccess(success);
|
||||
} else if (success is UpdateSendingEmailSuccess) {
|
||||
_handleUpdateSendingEmailSuccess(success);
|
||||
} else if (success is EmptySpamFolderSuccess) {
|
||||
_emptySpamFolderSuccess(success);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1949,6 +1955,29 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
void _storeSessionAction(Session 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
|
||||
void onClose() {
|
||||
|
||||
@@ -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/get_email_request.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/get_all_email_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);
|
||||
} else if (success is MarkAsMultipleEmailReadHasSomeEmailFailure) {
|
||||
_refreshEmailChanges(currentEmailState: success.currentEmailState);
|
||||
} else if (success is EmptyTrashFolderSuccess) {
|
||||
} else if (success is EmptyTrashFolderSuccess || success is EmptySpamFolderSuccess) {
|
||||
refreshAllEmail();
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user