TF-3385 Update empty trash and spam emails

This commit is contained in:
DatDang
2025-01-02 09:57:56 +07:00
committed by Dat H. Pham
parent 9660b40cd1
commit f1613a55ce
7 changed files with 45 additions and 6 deletions
@@ -77,6 +77,8 @@ import 'package:tmail_ui_user/features/push_notification/presentation/websocket/
import 'package:tmail_ui_user/features/push_notification/presentation/websocket/web_socket_queue_handler.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/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
@@ -339,6 +341,16 @@ class MailboxController extends BaseMailboxController
affectedMailboxId: reactionState.mailboxId,
totalEmailsChanged: -reactionState.emailIds.length,
);
} else if (reactionState is EmptyTrashFolderSuccess) {
_handleDeleteEmailsFromMailbox(
affectedMailboxId: reactionState.mailboxId,
totalEmailsChanged: -reactionState.emailIds.length,
);
} else if (reactionState is EmptySpamFolderSuccess) {
_handleDeleteEmailsFromMailbox(
affectedMailboxId: reactionState.mailboxId,
totalEmailsChanged: -reactionState.emailIds.length,
);
}
});
}
@@ -66,6 +66,8 @@ import 'package:tmail_ui_user/features/search/email/presentation/model/search_mo
import 'package:tmail_ui_user/features/search/email/presentation/search_email_bindings.dart';
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.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/mark_as_star_multiple_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
@@ -316,6 +318,16 @@ class SearchEmailController extends BaseController
emailIds: reactionState.emailIds,
affectedMailboxId: reactionState.mailboxId,
);
} else if (reactionState is EmptyTrashFolderSuccess) {
mailboxDashBoardController.handleDeleteEmailsInMailbox(
emailIds: reactionState.emailIds,
affectedMailboxId: reactionState.mailboxId,
);
} else if (reactionState is EmptySpamFolderSuccess) {
mailboxDashBoardController.handleDeleteEmailsInMailbox(
emailIds: reactionState.emailIds,
affectedMailboxId: reactionState.mailboxId,
);
}
});
}
@@ -8,11 +8,12 @@ class EmptySpamFolderLoading extends LoadingState {}
class EmptySpamFolderSuccess extends UIState {
final List<EmailId> emailIds;
final MailboxId? mailboxId;
EmptySpamFolderSuccess(this.emailIds);
EmptySpamFolderSuccess(this.emailIds, this.mailboxId);
@override
List<Object?> get props => [emailIds];
List<Object?> get props => [emailIds, mailboxId];
}
class EmptySpamFolderFailure extends FeatureFailure {
@@ -1,17 +1,19 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
class EmptyTrashFolderLoading extends LoadingState {}
class EmptyTrashFolderSuccess extends UIState {
final List<EmailId> emailIds;
final MailboxId? mailboxId;
EmptyTrashFolderSuccess(this.emailIds);
EmptyTrashFolderSuccess(this.emailIds, this.mailboxId);
@override
List<Object?> get props => [emailIds];
List<Object?> get props => [emailIds, mailboxId];
}
class EmptyTrashFolderFailure extends FeatureFailure {
@@ -32,7 +32,7 @@ class EmptySpamFolderInteractor {
totalEmails,
onProgressController
);
yield Right<Failure, Success>(EmptySpamFolderSuccess(emailIdDeleted));
yield Right<Failure, Success>(EmptySpamFolderSuccess(emailIdDeleted, spamMailboxId));
} catch (e) {
yield Left<Failure, Success>(EmptySpamFolderFailure(e));
}
@@ -32,7 +32,7 @@ class EmptyTrashFolderInteractor {
totalEmails,
onProgressController
);
yield Right<Failure, Success>(EmptyTrashFolderSuccess(emailIdDeleted,));
yield Right<Failure, Success>(EmptyTrashFolderSuccess(emailIdDeleted, trashMailboxId));
} catch (e) {
yield Left<Failure, Success>(EmptyTrashFolderFailure(e));
}
@@ -49,6 +49,8 @@ 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';
import 'package:tmail_ui_user/features/thread/domain/state/load_more_emails_state.dart';
@@ -395,6 +397,16 @@ class ThreadController extends BaseController with EmailActionController {
emailIds: reactionState.emailIds,
affectedMailboxId: reactionState.mailboxId,
);
} else if (reactionState is EmptyTrashFolderSuccess) {
mailboxDashBoardController.handleDeleteEmailsInMailbox(
emailIds: reactionState.emailIds,
affectedMailboxId: reactionState.mailboxId,
);
} else if (reactionState is EmptySpamFolderSuccess) {
mailboxDashBoardController.handleDeleteEmailsInMailbox(
emailIds: reactionState.emailIds,
affectedMailboxId: reactionState.mailboxId,
);
}
});
}