TF-3977 Add disable spam banner in preferences setting

This commit is contained in:
dab246
2025-08-29 18:21:10 +07:00
committed by Dat H. Pham
parent 7f4dcf8b38
commit 612fc75f02
41 changed files with 534 additions and 404 deletions
@@ -2004,6 +2004,7 @@ class MailboxDashBoardController extends ReloadableController
_getAllIdentities();
notifyThreadDetailSettingUpdated();
getServerSetting();
spamReportController.getSpamReportStateAction();
}
Future<List<PresentationEmail>> quickSearchEmails(String query) async {
@@ -2074,6 +2075,7 @@ class MailboxDashBoardController extends ReloadableController
_getAllIdentities();
notifyThreadDetailSettingUpdated();
getServerSetting();
spamReportController.getSpamReportStateAction();
}
void _handleUpdateVacationSuccess(UpdateVacationSuccess success) {
@@ -19,6 +19,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spa
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_last_time_dismissed_spam_reported_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/store_spam_report_state_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/spam_report_loader_status.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class SpamReportController extends BaseController {
final StoreSpamReportInteractor _storeSpamReportInteractor;
@@ -29,6 +31,9 @@ class SpamReportController extends BaseController {
final presentationSpamMailbox = Rxn<PresentationMailbox>();
final spamReportState = Rx<SpamReportState>(SpamReportState.enabled);
AppLifecycleListener? _appLifecycleListener;
SpamReportLoaderStatus _spamReportLoaderStatus = SpamReportLoaderStatus.idle;
SpamReportController(
this._storeSpamReportInteractor,
this._storeSpamReportStateInteractor,
@@ -36,28 +41,60 @@ class SpamReportController extends BaseController {
this._getSpamMailboxCachedInteractor
);
@override
void onInit() {
super.onInit();
_appLifecycleListener ??= AppLifecycleListener(
onResume: () {
if (_spamReportLoaderStatus == SpamReportLoaderStatus.loading) {
return;
}
getSpamReportStateAction();
},
);
}
@override
void handleSuccessViewState(Success success) {
super.handleSuccessViewState(success);
if (success is StoreLastTimeDismissedSpamReportSuccess) {
presentationSpamMailbox.value = null;
} else if (success is GetSpamReportStateLoading) {
_spamReportLoaderStatus = SpamReportLoaderStatus.loading;
} else if (success is GetSpamReportStateSuccess) {
spamReportState.value = success.spamReportState;
_loadSpamReportConfigSuccess(success.spamReportState);
} else if (success is StoreSpamReportStateSuccess) {
spamReportState.value = success.spamReportState;
getBinding<MailboxDashBoardController>()?.refreshSpamReportBanner();
} else if (success is GetSpamMailboxCachedSuccess) {
presentationSpamMailbox.value = success.spamMailbox.toPresentationMailbox();
} else {
super.handleSuccessViewState(success);
}
}
@override
void handleFailureViewState(Failure failure) {
super.handleFailureViewState(failure);
if (failure is GetSpamMailboxCachedFailure) {
presentationSpamMailbox.value = null;
} else if (failure is GetSpamReportStateFailure) {
_spamReportLoaderStatus = SpamReportLoaderStatus.completed;
} else {
super.handleFailureViewState(failure);
}
}
@override
void handleErrorViewState(Object error, StackTrace stackTrace) {
super.handleErrorViewState(error, stackTrace);
_spamReportLoaderStatus = SpamReportLoaderStatus.completed;
}
void _loadSpamReportConfigSuccess(SpamReportState newState) {
spamReportState.value = newState;
_spamReportLoaderStatus = SpamReportLoaderStatus.completed;
getBinding<MailboxDashBoardController>()?.refreshSpamReportBanner();
}
void dismissSpamReportAction(BuildContext context) {
if (Get.isRegistered<MailboxDashBoardController>()) {
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
@@ -109,4 +146,10 @@ class SpamReportController extends BaseController {
void setSpamPresentationMailbox(PresentationMailbox? spamMailbox) {
presentationSpamMailbox.value = spamMailbox;
}
@override
void onClose() {
_appLifecycleListener?.dispose();
super.onClose();
}
}