TF-1667 Trigger show spam report banner when mailboxes changed
(cherry picked from commit 6530da92012774a8bd318cd1c87cf1f503feef69)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
|
||||
enum DataSourceType {
|
||||
network,
|
||||
local
|
||||
local,
|
||||
cache
|
||||
}
|
||||
@@ -170,8 +170,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
(success) async {
|
||||
if (success is GetAllMailboxSuccess) {
|
||||
_initialMailboxVariableStorage();
|
||||
mailboxDashBoardController.getSpamReportBanner();
|
||||
} else if (success is RefreshChangesAllMailboxSuccess) {
|
||||
_initialMailboxVariableStorage(isRefreshChange: true);
|
||||
mailboxDashBoardController.refreshSpamReportBanner();
|
||||
} else if (success is CreateNewMailboxSuccess) {
|
||||
_createNewMailboxSuccess(success);
|
||||
} else if (success is DeleteMultipleMailboxAllSuccess) {
|
||||
@@ -291,7 +293,6 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
||||
}
|
||||
|
||||
void _refreshMailboxChanges({jmap.State? currentMailboxState}) {
|
||||
mailboxDashBoardController.showSpamReportBanner();
|
||||
log('MailboxController::_refreshMailboxChanges(): currentMailboxState: $currentMailboxState');
|
||||
final newMailboxState = currentMailboxState ?? this.currentMailboxState;
|
||||
log('MailboxController::_refreshMailboxChanges(): newMailboxState: $newMailboxState');
|
||||
|
||||
+11
-3
@@ -62,6 +62,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/spam_re
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/search_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/session_storage_composer_datasoure_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/share_preference_spam_report_data_source_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/spam_report_cache_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/spam_report_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/local/share_preference_spam_report_data_source.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/network/spam_report_api.dart';
|
||||
@@ -74,6 +75,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/spam_
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_app_dashboard_configuration_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_composer_cache_on_web_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_spam_mailbox_cached_interactor.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/quick_search_email_interactor.dart';
|
||||
@@ -139,8 +141,9 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<StoreSpamReportInteractor>(),
|
||||
Get.find<GetUnreadSpamMailboxInteractor>(),
|
||||
Get.find<StoreSpamReportStateInteractor>(),
|
||||
Get.find<GetSpamReportStateInteractor>()
|
||||
));
|
||||
Get.find<GetSpamReportStateInteractor>(),
|
||||
Get.find<GetSpamMailboxCachedInteractor>()));
|
||||
|
||||
Get.put(MailboxDashBoardController(
|
||||
Get.find<LogoutOidcInteractor>(),
|
||||
Get.find<DeleteAuthorityOidcInteractor>(),
|
||||
@@ -221,6 +224,9 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<SharePreferenceSpamReportDataSource>(),
|
||||
Get.find<CacheExceptionThrower>(),
|
||||
));
|
||||
Get.lazyPut(() => SpamReportCacheDataSourceImpl(
|
||||
Get.find<MailboxCacheManager>(),
|
||||
Get.find<CacheExceptionThrower>()));
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -293,6 +299,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<SpamReportRepository>()));
|
||||
Get.lazyPut(() => GetSpamReportStateInteractor(
|
||||
Get.find<SpamReportRepository>()));
|
||||
Get.lazyPut(() => GetSpamMailboxCachedInteractor(Get.find<SpamReportRepository>()));
|
||||
Get.lazyPut(() => SendEmailInteractor(
|
||||
Get.find<EmailRepository>(),
|
||||
Get.find<MailboxRepository>()
|
||||
@@ -340,7 +347,8 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut(() => SpamReportRepositoryImpl(
|
||||
{
|
||||
DataSourceType.network: Get.find<SpamReportDataSource>(),
|
||||
DataSourceType.local: Get.find<SharePreferenceSpamReportDataSourceImpl>()
|
||||
DataSourceType.local: Get.find<SharePreferenceSpamReportDataSourceImpl>(),
|
||||
DataSourceType.cache: Get.find<SpamReportCacheDataSourceImpl>()
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
+12
-4
@@ -431,13 +431,13 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
injectVacationBindings(sessionCurrent, accountId.value);
|
||||
injectFCMBindings(sessionCurrent, accountId.value);
|
||||
_getVacationResponse();
|
||||
spamReportController.getSpamReportStateAction();
|
||||
|
||||
if (!BuildUtils.isWeb && !_notificationManager.isNotificationClickedOnTerminate) {
|
||||
_handleClickLocalNotificationOnTerminated();
|
||||
} else {
|
||||
dispatchRoute(DashboardRoutes.thread);
|
||||
}
|
||||
showSpamReportBanner();
|
||||
} else {
|
||||
dispatchRoute(DashboardRoutes.thread);
|
||||
reload();
|
||||
@@ -1195,7 +1195,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
injectFCMBindings(sessionCurrent, accountId.value);
|
||||
injectVacationBindings(sessionCurrent, accountId.value);
|
||||
_getVacationResponse();
|
||||
showSpamReportBanner();
|
||||
spamReportController.getSpamReportStateAction();
|
||||
}
|
||||
|
||||
void _getRouteParameters() {
|
||||
@@ -1588,9 +1588,17 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
bool get enableSpamReport => spamReportController.enableSpamReport;
|
||||
|
||||
void showSpamReportBanner() {
|
||||
void getSpamReportBanner() {
|
||||
if (spamReportController.enableSpamReport &&
|
||||
sessionCurrent != null &&
|
||||
accountId.value != null) {
|
||||
spamReportController.getSpamMailboxAction(sessionCurrent!, accountId.value!);
|
||||
}
|
||||
}
|
||||
|
||||
void refreshSpamReportBanner() {
|
||||
if (spamReportController.enableSpamReport) {
|
||||
spamReportController.getUnreadSpamMailboxAction(sessionCurrent!, accountId.value!);
|
||||
spamReportController.getSpamMailboxCached();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+24
-16
@@ -1,4 +1,3 @@
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
@@ -10,9 +9,11 @@ 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_mailbox_cached_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_mailbox_cached_interactor.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';
|
||||
@@ -24,35 +25,38 @@ class SpamReportController extends BaseController {
|
||||
final GetUnreadSpamMailboxInteractor _getNumberOfUnreadSpamEmailsInteractor;
|
||||
final StoreSpamReportStateInteractor _storeSpamReportStateInteractor;
|
||||
final GetSpamReportStateInteractor _getSpamReportStateInteractor;
|
||||
final GetSpamMailboxCachedInteractor _getSpamMailboxCachedInteractor;
|
||||
|
||||
final _presentationSpamMailbox = Rxn<PresentationMailbox>();
|
||||
final _spamReportState = Rxn<SpamReportState>(SpamReportState.enabled);
|
||||
|
||||
SpamReportController(
|
||||
this._storeSpamReportInteractor,
|
||||
this._getNumberOfUnreadSpamEmailsInteractor,
|
||||
this._storeSpamReportStateInteractor,
|
||||
this._getSpamReportStateInteractor);
|
||||
this._storeSpamReportInteractor,
|
||||
this._getNumberOfUnreadSpamEmailsInteractor,
|
||||
this._storeSpamReportStateInteractor,
|
||||
this._getSpamReportStateInteractor,
|
||||
this._getSpamMailboxCachedInteractor
|
||||
);
|
||||
|
||||
@override
|
||||
void onDone() {
|
||||
viewState.value.fold(
|
||||
(failure) {
|
||||
logError('SpamReportController::onDone(): failure: $failure');
|
||||
if (failure is GetUnreadSpamMailboxFailure || failure is GetSpamMailboxCachedFailure) {
|
||||
_presentationSpamMailbox.value = null;
|
||||
}
|
||||
},
|
||||
(success) {
|
||||
if(success is GetUnreadSpamMailboxSuccess){
|
||||
if (success is GetUnreadSpamMailboxSuccess){
|
||||
_presentationSpamMailbox.value = success.unreadSpamMailbox.toPresentationMailbox();
|
||||
log('SpamReportController::GetNumberOfUnreadSpamEmailsSuccess():success $success');
|
||||
} 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');
|
||||
} else if (success is GetSpamMailboxCachedSuccess) {
|
||||
_presentationSpamMailbox.value = success.spamMailbox.toPresentationMailbox();
|
||||
}
|
||||
},
|
||||
);
|
||||
@@ -66,6 +70,8 @@ class SpamReportController extends BaseController {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
|
||||
if (spamMailbox != null && session != null && accountId != null) {
|
||||
_storeLastTimeDismissedSpamReportedAction();
|
||||
|
||||
mailboxDashBoardController.markAsReadMailbox(
|
||||
session,
|
||||
accountId,
|
||||
@@ -78,13 +84,15 @@ class SpamReportController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
void getUnreadSpamMailboxAction(Session session, AccountId accountId) {
|
||||
final mailboxFilterCondition = MailboxFilterCondition(role: Role('Spam'));
|
||||
getSpamReportStateAction();
|
||||
void getSpamMailboxAction(Session session, AccountId accountId) {
|
||||
consumeState(_getNumberOfUnreadSpamEmailsInteractor.execute(
|
||||
session,
|
||||
accountId,
|
||||
mailboxFilterCondition: mailboxFilterCondition));
|
||||
mailboxFilterCondition: MailboxFilterCondition(role: Role('Spam'))));
|
||||
}
|
||||
|
||||
void getSpamMailboxCached() {
|
||||
consumeState(_getSpamMailboxCachedInteractor.execute());
|
||||
}
|
||||
|
||||
void _storeLastTimeDismissedSpamReportedAction() {
|
||||
@@ -93,7 +101,7 @@ class SpamReportController extends BaseController {
|
||||
|
||||
bool get notShowSpamReportBanner => _presentationSpamMailbox.value == null;
|
||||
|
||||
int get numberOfUnreadSpamEmails => (_presentationSpamMailbox.value?.unreadEmails?.value.value ?? 0).toInt();
|
||||
String get numberOfUnreadSpamEmails => _presentationSpamMailbox.value?.getCountUnReadEmails() ?? '';
|
||||
|
||||
bool get enableSpamReport => _spamReportState.value == SpamReportState.enabled;
|
||||
|
||||
|
||||
@@ -2662,7 +2662,7 @@ class AppLocalizations {
|
||||
);
|
||||
}
|
||||
|
||||
String countNewSpamEmails(int count,) {
|
||||
String countNewSpamEmails(String count) {
|
||||
return Intl.message(
|
||||
'You have $count new spam emails!',
|
||||
name: 'countNewSpamEmails',
|
||||
|
||||
Reference in New Issue
Block a user