TF-1363: [Presentation] Implement disable and enable spam report
This commit is contained in:
+14
-1
@@ -47,6 +47,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/state/mark_as_mailbox_read
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/usecases/mark_as_mailbox_read_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.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_app_dashboard_configuration_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_composer_cache_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
|
||||
@@ -416,7 +417,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
} else {
|
||||
dispatchRoute(DashboardRoutes.thread);
|
||||
}
|
||||
spamReportController.getUnreadSpamMailboxAction(accountId.value!);
|
||||
_showSpamReportbanner();
|
||||
} else {
|
||||
dispatchRoute(DashboardRoutes.thread);
|
||||
reload();
|
||||
@@ -1526,6 +1527,18 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
dispatchAction(OpenSpamMailboxAction(context, presentationMailbox));
|
||||
}
|
||||
|
||||
bool get enableSpamRepot => spamReportController.enableSpamReport;
|
||||
|
||||
void _showSpamReportbanner() {
|
||||
if (spamReportController.enableSpamReport) {
|
||||
spamReportController.getUnreadSpamMailboxAction(accountId.value!);
|
||||
}
|
||||
}
|
||||
|
||||
void storeSpamReportStateAction(SpamReportState spamReportState) {
|
||||
spamReportController.storeSpamReportStateAction(spamReportState);
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||
|
||||
@@ -7,19 +7,31 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_filter_condition.dart
|
||||
import 'package:model/extensions/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_dashboard/domain/model/spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_number_of_unread_spam_emails_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/store_last_time_dismissed_spam_reported_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/store_spam_report_state.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_report_state_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_unread_spam_mailbox_interactor.dart';
|
||||
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';
|
||||
|
||||
class SpamReportController extends BaseController {
|
||||
final StoreSpamReportInteractor _storeSpamReportInteractor;
|
||||
final GetUnreadSpamMailboxInteractor _getNumberOfUnreadSpamEmailsInteractor;
|
||||
final StoreSpamReportStateInteractor _storeSpamReportStateInteractor;
|
||||
final GetSpamReportStateInteractor _getSpamReportStateInteractor;
|
||||
|
||||
final _presentationSpamMailbox = Rxn<PresentationMailbox>();
|
||||
final _spamReportState = Rxn<SpamReportState>(SpamReportState.enabled);
|
||||
|
||||
SpamReportController(this._storeSpamReportInteractor, this._getNumberOfUnreadSpamEmailsInteractor);
|
||||
SpamReportController(
|
||||
this._storeSpamReportInteractor,
|
||||
this._getNumberOfUnreadSpamEmailsInteractor,
|
||||
this._storeSpamReportStateInteractor,
|
||||
this._getSpamReportStateInteractor);
|
||||
|
||||
@override
|
||||
void onDone() {
|
||||
@@ -31,9 +43,15 @@ class SpamReportController extends BaseController {
|
||||
if(success is GetUnreadSpamMailboxSuccess){
|
||||
_presentationSpamMailbox.value = success.unreadSpamMailbox.toPresentationMailbox();
|
||||
log('SpamReportController::GetNumberOfUnreadSpamEmailsSuccess():success $success');
|
||||
} else if(success is StoreLastTimeDismissedSpamReportSuccess){
|
||||
} else if (success is StoreLastTimeDismissedSpamReportSuccess) {
|
||||
_presentationSpamMailbox.value = null;
|
||||
log('SpamReportController::StoreLastTimeDismissedSpamReportSuccess():success $success');
|
||||
} else if (success is GetSpamReportStateSuccess) {
|
||||
_spamReportState.value = success.spamReportState;
|
||||
log('SpamReportController::GetSpamReportStateSuccess():success $success');
|
||||
} else if (success is StoreSpamReportStateSuccess) {
|
||||
_spamReportState.value = success.spamReportState;
|
||||
log('SpamReportController::StoreSpamReportStateSuccess():success $success');
|
||||
}
|
||||
},
|
||||
);
|
||||
@@ -43,8 +61,9 @@ class SpamReportController extends BaseController {
|
||||
_storeLastTimeDismissedSpamReportedAction();
|
||||
}
|
||||
|
||||
void getUnreadSpamMailboxAction(AccountId accountId){
|
||||
void getUnreadSpamMailboxAction(AccountId accountId) {
|
||||
final _mailboxFilterCondition = MailboxFilterCondition(role: Role('Spam'));
|
||||
getSpamReportStateAction();
|
||||
consumeState(_getNumberOfUnreadSpamEmailsInteractor.execute(accountId,mailboxFilterCondition: _mailboxFilterCondition));
|
||||
}
|
||||
|
||||
@@ -56,9 +75,19 @@ class SpamReportController extends BaseController {
|
||||
|
||||
int get numberOfUnreadSpamEmails => (_presentationSpamMailbox.value?.unreadEmails?.value.value ?? 0).toInt();
|
||||
|
||||
bool get enableSpamReport => _spamReportState.value == SpamReportState.enabled;
|
||||
|
||||
void openMailbox(BuildContext context) {
|
||||
final _mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||
dismissSpamReportAction();
|
||||
_mailboxDashBoardController.openSpamMailboxAction(context, _presentationSpamMailbox.value!);
|
||||
}
|
||||
|
||||
void storeSpamReportStateAction(SpamReportState spamReportState) {
|
||||
consumeState(_storeSpamReportStateInteractor.execute(spamReportState));
|
||||
}
|
||||
|
||||
void getSpamReportStateAction() {
|
||||
consumeState(_getSpamReportStateInteractor.execute());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user