TF-4385 Fix spam banner show it once per day

This commit is contained in:
dab246
2026-03-25 15:43:33 +07:00
committed by Dat H. Pham
parent cee2dd9d14
commit e4107c7363
11 changed files with 54 additions and 44 deletions
@@ -2534,24 +2534,6 @@ class MailboxDashBoardController extends ReloadableController
bool get enableSpamReport => spamReportController.enableSpamReport;
void getSpamReportBanner() {
if (enableSpamReport) {
final spamId = spamMailboxId;
if (spamId == null) {
spamReportController.setSpamPresentationMailbox(null);
return;
}
final spamMailbox = mapMailboxById[spamId];
final unreadEmails = spamMailbox?.unreadEmails?.value.value ?? 0;
if (unreadEmails > 0) {
spamReportController.setSpamPresentationMailbox(spamMailbox);
} else {
spamReportController.setSpamPresentationMailbox(null);
}
}
}
void refreshSpamReportBanner() {
if (enableSpamReport && sessionCurrent != null && accountId.value != null) {
spamReportController.getSpamMailboxCached(accountId.value!, sessionCurrent!.username);
@@ -9,6 +9,7 @@ import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/spam_report_exception.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_spam_mailbox_cached_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_spam_report_state.dart';
@@ -75,7 +76,7 @@ class SpamReportController extends BaseController {
@override
void handleFailureViewState(Failure failure) {
if (failure is GetSpamMailboxCachedFailure) {
presentationSpamMailbox.value = null;
_validateSpamMailboxChanged(failure);
} else if (failure is GetSpamReportStateFailure) {
_spamReportLoaderStatus = LoaderStatus.completed;
} else {
@@ -147,6 +148,16 @@ class SpamReportController extends BaseController {
presentationSpamMailbox.value = spamMailbox;
}
void _validateSpamMailboxChanged(GetSpamMailboxCachedFailure failure) {
if (failure.exception is NoUnreadSpamEmailsException) {
final currentSpamMailbox = presentationSpamMailbox.value;
if (currentSpamMailbox != null && currentSpamMailbox.countUnreadEmails > 0) {
_storeLastTimeDismissedSpamReportedAction();
}
}
setSpamPresentationMailbox(null);
}
@override
void onClose() {
_appLifecycleListener?.dispose();