From 272a36fdbc6e25d7f21737644e9e9cea76688362 Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Mon, 16 Jan 2023 17:35:53 +0700 Subject: [PATCH] TF-1363: [Presentation] Fix margin for SpamReportBannerMobile and add check condition UnreadSpamNumber --- .../presentation/mailbox_controller.dart | 4 +- .../get_unread_spam_mailbox_interactor.dart | 8 +- .../mailbox_dashboard_controller.dart | 5 +- .../widgets/spam_report_banner_widget.dart | 4 +- ...ails_in_mailbox_interactor_test.mocks.dart | 194 +++++++---------- ...ails_in_mailbox_interactor_test.mocks.dart | 196 +++++++----------- 6 files changed, 160 insertions(+), 251 deletions(-) diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 45b4dfbe2..19125147a 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -1123,9 +1123,7 @@ class MailboxController extends BaseMailboxController { break; case MailboxActions.disableSpamReport: case MailboxActions.enableSpamReport: - final _currentSpamReportState = mailboxDashBoardController.enableSpamRepot; - final _storeSpamReportState = _currentSpamReportState ? SpamReportState.disabled : SpamReportState.enabled; - mailboxDashBoardController.storeSpamReportStateAction(_storeSpamReportState); + mailboxDashBoardController.storeSpamReportStateAction(); return; default: break; diff --git a/lib/features/mailbox_dashboard/domain/usecases/get_unread_spam_mailbox_interactor.dart b/lib/features/mailbox_dashboard/domain/usecases/get_unread_spam_mailbox_interactor.dart index a978c6cb7..c30340763 100644 --- a/lib/features/mailbox_dashboard/domain/usecases/get_unread_spam_mailbox_interactor.dart +++ b/lib/features/mailbox_dashboard/domain/usecases/get_unread_spam_mailbox_interactor.dart @@ -28,11 +28,15 @@ class GetUnreadSpamMailboxInteractor { final _checkTimeCondition = (_timeLast.inHours > 0) && (_timeLast.inHours > conditionsForDisplayingSpamReportBanner); - if (true) { + if (_checkTimeCondition) { final _response = await _spamReportRepository.getUnreadSpamMailbox(accountId, mailboxFilterCondition: mailboxFilterCondition, limit: limit); final _unreadSpamMailbox = _response.unreadSpamMailbox; - yield Right(GetUnreadSpamMailboxSuccess(_unreadSpamMailbox!)); + if (_unreadSpamMailbox!.unreadEmails!.value.value > 0) { + yield Right(GetUnreadSpamMailboxSuccess(_unreadSpamMailbox)); + } else { + yield Left(InvalidSpamReportCondition()); + } } else { yield Left(InvalidSpamReportCondition()); } diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 9333337ab..51af2140e 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -1535,8 +1535,9 @@ class MailboxDashBoardController extends ReloadableController { } } - void storeSpamReportStateAction(SpamReportState spamReportState) { - spamReportController.storeSpamReportStateAction(spamReportState); + void storeSpamReportStateAction() { + final _storeSpamReportState = enableSpamRepot ? SpamReportState.disabled : SpamReportState.enabled; + spamReportController.storeSpamReportStateAction(_storeSpamReportState); } @override diff --git a/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart b/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart index 16dadee5f..ff0c7e47c 100644 --- a/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart +++ b/lib/features/thread/presentation/widgets/spam_report_banner_widget.dart @@ -20,7 +20,9 @@ class SpamReportBannerWidget extends StatelessWidget { } return Container( height: 124, - margin: const EdgeInsets.all(16), + margin: const EdgeInsets.only( + top: 12, left: 16, right: 16, bottom: 16 + ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), border: Border.all(color: AppColor.colorBorderBodyThread, width: 1), diff --git a/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.mocks.dart b/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.mocks.dart index a11c90529..cb5e7f139 100644 --- a/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.mocks.dart +++ b/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.mocks.dart @@ -3,26 +3,25 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i4; +import 'dart:async' as _i3; -import 'package:jmap_dart_client/jmap/account_id.dart' as _i6; -import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i14; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i10; -import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i8; -import 'package:jmap_dart_client/jmap/core/state.dart' as _i11; -import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i7; -import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i13; -import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i15; +import 'package:jmap_dart_client/jmap/account_id.dart' as _i5; +import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i13; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9; +import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i7; +import 'package:jmap_dart_client/jmap/core/state.dart' as _i10; +import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6; +import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i12; +import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i14; import 'package:mockito/mockito.dart' as _i1; -import 'package:model/email/presentation_email.dart' as _i2; import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart' - as _i9; + as _i8; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart' - as _i5; + as _i4; import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart' - as _i12; + as _i11; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart' - as _i3; + as _i2; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -34,127 +33,80 @@ import 'package:tmail_ui_user/features/thread/domain/repository/thread_repositor // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types -class _FakePresentationEmail_0 extends _i1.Fake - implements _i2.PresentationEmail {} - /// A class which mocks [ThreadRepository]. /// /// See the documentation for Mockito's code generation for more information. -class MockThreadRepository extends _i1.Mock implements _i3.ThreadRepository { +class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository { MockThreadRepository() { _i1.throwOnMissingStub(this); } @override - _i4.Stream<_i5.EmailsResponse> getAllEmail( - _i6.AccountId? accountId, { - _i7.UnsignedInt? limit, - Set<_i8.Comparator>? sort, - _i9.EmailFilter? emailFilter, - _i10.Properties? propertiesCreated, - _i10.Properties? propertiesUpdated, - }) => + _i3.Stream<_i4.EmailsResponse> getAllEmail(_i5.AccountId? accountId, + {_i6.UnsignedInt? limit, + Set<_i7.Comparator>? sort, + _i8.EmailFilter? emailFilter, + _i9.Properties? propertiesCreated, + _i9.Properties? propertiesUpdated}) => (super.noSuchMethod( - Invocation.method( - #getAllEmail, - [accountId], - { - #limit: limit, - #sort: sort, - #emailFilter: emailFilter, - #propertiesCreated: propertiesCreated, - #propertiesUpdated: propertiesUpdated, - }, - ), - returnValue: Stream<_i5.EmailsResponse>.empty(), - ) as _i4.Stream<_i5.EmailsResponse>); + Invocation.method(#getAllEmail, [ + accountId + ], { + #limit: limit, + #sort: sort, + #emailFilter: emailFilter, + #propertiesCreated: propertiesCreated, + #propertiesUpdated: propertiesUpdated + }), + returnValue: Stream<_i4.EmailsResponse>.empty()) + as _i3.Stream<_i4.EmailsResponse>); @override - _i4.Stream<_i5.EmailsResponse> refreshChanges( - _i6.AccountId? accountId, - _i11.State? currentState, { - Set<_i8.Comparator>? sort, - _i9.EmailFilter? emailFilter, - _i10.Properties? propertiesCreated, - _i10.Properties? propertiesUpdated, - }) => + _i3.Stream<_i4.EmailsResponse> refreshChanges( + _i5.AccountId? accountId, _i10.State? currentState, + {Set<_i7.Comparator>? sort, + _i8.EmailFilter? emailFilter, + _i9.Properties? propertiesCreated, + _i9.Properties? propertiesUpdated}) => (super.noSuchMethod( - Invocation.method( - #refreshChanges, - [ - accountId, - currentState, - ], - { - #sort: sort, - #emailFilter: emailFilter, - #propertiesCreated: propertiesCreated, - #propertiesUpdated: propertiesUpdated, - }, - ), - returnValue: Stream<_i5.EmailsResponse>.empty(), - ) as _i4.Stream<_i5.EmailsResponse>); + Invocation.method(#refreshChanges, [ + accountId, + currentState + ], { + #sort: sort, + #emailFilter: emailFilter, + #propertiesCreated: propertiesCreated, + #propertiesUpdated: propertiesUpdated + }), + returnValue: Stream<_i4.EmailsResponse>.empty()) + as _i3.Stream<_i4.EmailsResponse>); @override - _i4.Stream<_i5.EmailsResponse> loadMoreEmails( - _i12.GetEmailRequest? emailRequest) => - (super.noSuchMethod( - Invocation.method( - #loadMoreEmails, - [emailRequest], - ), - returnValue: Stream<_i5.EmailsResponse>.empty(), - ) as _i4.Stream<_i5.EmailsResponse>); + _i3.Stream<_i4.EmailsResponse> loadMoreEmails( + _i11.GetEmailRequest? emailRequest) => + (super.noSuchMethod(Invocation.method(#loadMoreEmails, [emailRequest]), + returnValue: Stream<_i4.EmailsResponse>.empty()) + as _i3.Stream<_i4.EmailsResponse>); @override - _i4.Future> searchEmails( - _i6.AccountId? accountId, { - _i7.UnsignedInt? limit, - Set<_i8.Comparator>? sort, - _i14.Filter? filter, - _i10.Properties? properties, - }) => + _i3.Future> searchEmails(_i5.AccountId? accountId, + {_i6.UnsignedInt? limit, + Set<_i7.Comparator>? sort, + _i13.Filter? filter, + _i9.Properties? properties}) => (super.noSuchMethod( - Invocation.method( - #searchEmails, - [accountId], - { - #limit: limit, - #sort: sort, - #filter: filter, - #properties: properties, - }, - ), - returnValue: Future>.value(<_i13.Email>[]), - ) as _i4.Future>); + Invocation.method(#searchEmails, [ + accountId + ], { + #limit: limit, + #sort: sort, + #filter: filter, + #properties: properties + }), + returnValue: Future>.value(<_i12.Email>[])) + as _i3.Future>); @override - _i4.Future> emptyTrashFolder( - _i6.AccountId? accountId, - _i15.MailboxId? trashMailboxId, - ) => + _i3.Future> emptyTrashFolder( + _i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) => (super.noSuchMethod( - Invocation.method( - #emptyTrashFolder, - [ - accountId, - trashMailboxId, - ], - ), - returnValue: Future>.value(<_i13.EmailId>[]), - ) as _i4.Future>); - @override - _i4.Future<_i2.PresentationEmail> getEmailById( - _i6.AccountId? accountId, - _i13.EmailId? emailId, { - _i10.Properties? properties, - }) => - (super.noSuchMethod( - Invocation.method( - #getEmailById, - [ - accountId, - emailId, - ], - {#properties: properties}, - ), - returnValue: - Future<_i2.PresentationEmail>.value(_FakePresentationEmail_0()), - ) as _i4.Future<_i2.PresentationEmail>); + Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]), + returnValue: Future>.value(<_i12.EmailId>[])) + as _i3.Future>); } diff --git a/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.mocks.dart b/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.mocks.dart index 5753dd7d0..d55f1162c 100644 --- a/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.mocks.dart +++ b/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.mocks.dart @@ -3,26 +3,25 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i4; +import 'dart:async' as _i3; -import 'package:jmap_dart_client/jmap/account_id.dart' as _i6; -import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i14; -import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i10; -import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i8; -import 'package:jmap_dart_client/jmap/core/state.dart' as _i11; -import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i7; -import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i13; -import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i15; +import 'package:jmap_dart_client/jmap/account_id.dart' as _i5; +import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i13; +import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9; +import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i7; +import 'package:jmap_dart_client/jmap/core/state.dart' as _i10; +import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6; +import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i12; +import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i14; import 'package:mockito/mockito.dart' as _i1; -import 'package:model/email/presentation_email.dart' as _i2; import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart' - as _i9; + as _i8; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart' - as _i5; + as _i4; import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart' - as _i12; + as _i11; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart' - as _i3; + as _i2; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -34,127 +33,80 @@ import 'package:tmail_ui_user/features/thread/domain/repository/thread_repositor // ignore_for_file: unnecessary_parenthesis // ignore_for_file: camel_case_types -class _FakePresentationEmail_0 extends _i1.Fake - implements _i2.PresentationEmail {} - /// A class which mocks [ThreadRepository]. /// /// See the documentation for Mockito's code generation for more information. -class MockThreadRepository extends _i1.Mock implements _i3.ThreadRepository { +class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository { MockThreadRepository() { _i1.throwOnMissingStub(this); } @override - _i4.Stream<_i5.EmailsResponse> getAllEmail( - _i6.AccountId? accountId, { - _i7.UnsignedInt? limit, - Set<_i8.Comparator>? sort, - _i9.EmailFilter? emailFilter, - _i10.Properties? propertiesCreated, - _i10.Properties? propertiesUpdated, - }) => + _i3.Stream<_i4.EmailsResponse> getAllEmail(_i5.AccountId? accountId, + {_i6.UnsignedInt? limit, + Set<_i7.Comparator>? sort, + _i8.EmailFilter? emailFilter, + _i9.Properties? propertiesCreated, + _i9.Properties? propertiesUpdated}) => (super.noSuchMethod( - Invocation.method( - #getAllEmail, - [accountId], - { - #limit: limit, - #sort: sort, - #emailFilter: emailFilter, - #propertiesCreated: propertiesCreated, - #propertiesUpdated: propertiesUpdated, - }, - ), - returnValue: Stream<_i5.EmailsResponse>.empty(), - ) as _i4.Stream<_i5.EmailsResponse>); + Invocation.method(#getAllEmail, [ + accountId + ], { + #limit: limit, + #sort: sort, + #emailFilter: emailFilter, + #propertiesCreated: propertiesCreated, + #propertiesUpdated: propertiesUpdated + }), + returnValue: Stream<_i4.EmailsResponse>.empty()) + as _i3.Stream<_i4.EmailsResponse>); @override - _i4.Stream<_i5.EmailsResponse> refreshChanges( - _i6.AccountId? accountId, - _i11.State? currentState, { - Set<_i8.Comparator>? sort, - _i9.EmailFilter? emailFilter, - _i10.Properties? propertiesCreated, - _i10.Properties? propertiesUpdated, - }) => + _i3.Stream<_i4.EmailsResponse> refreshChanges( + _i5.AccountId? accountId, _i10.State? currentState, + {Set<_i7.Comparator>? sort, + _i8.EmailFilter? emailFilter, + _i9.Properties? propertiesCreated, + _i9.Properties? propertiesUpdated}) => (super.noSuchMethod( - Invocation.method( - #refreshChanges, - [ - accountId, - currentState, - ], - { - #sort: sort, - #emailFilter: emailFilter, - #propertiesCreated: propertiesCreated, - #propertiesUpdated: propertiesUpdated, - }, - ), - returnValue: Stream<_i5.EmailsResponse>.empty(), - ) as _i4.Stream<_i5.EmailsResponse>); + Invocation.method(#refreshChanges, [ + accountId, + currentState + ], { + #sort: sort, + #emailFilter: emailFilter, + #propertiesCreated: propertiesCreated, + #propertiesUpdated: propertiesUpdated + }), + returnValue: Stream<_i4.EmailsResponse>.empty()) + as _i3.Stream<_i4.EmailsResponse>); @override - _i4.Stream<_i5.EmailsResponse> loadMoreEmails( - _i12.GetEmailRequest? emailRequest) => - (super.noSuchMethod( - Invocation.method( - #loadMoreEmails, - [emailRequest], - ), - returnValue: Stream<_i5.EmailsResponse>.empty(), - ) as _i4.Stream<_i5.EmailsResponse>); + _i3.Stream<_i4.EmailsResponse> loadMoreEmails( + _i11.GetEmailRequest? emailRequest) => + (super.noSuchMethod(Invocation.method(#loadMoreEmails, [emailRequest]), + returnValue: Stream<_i4.EmailsResponse>.empty()) + as _i3.Stream<_i4.EmailsResponse>); @override - _i4.Future> searchEmails( - _i6.AccountId? accountId, { - _i7.UnsignedInt? limit, - Set<_i8.Comparator>? sort, - _i14.Filter? filter, - _i10.Properties? properties, - }) => + _i3.Future> searchEmails(_i5.AccountId? accountId, + {_i6.UnsignedInt? limit, + Set<_i7.Comparator>? sort, + _i13.Filter? filter, + _i9.Properties? properties}) => (super.noSuchMethod( - Invocation.method( - #searchEmails, - [accountId], - { - #limit: limit, - #sort: sort, - #filter: filter, - #properties: properties, - }, - ), - returnValue: Future>.value(<_i13.Email>[]), - ) as _i4.Future>); + Invocation.method(#searchEmails, [ + accountId + ], { + #limit: limit, + #sort: sort, + #filter: filter, + #properties: properties + }), + returnValue: Future>.value(<_i12.Email>[])) + as _i3.Future>); @override - _i4.Future> emptyTrashFolder( - _i6.AccountId? accountId, - _i15.MailboxId? trashMailboxId, - ) => + _i3.Future> emptyTrashFolder( + _i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) => (super.noSuchMethod( - Invocation.method( - #emptyTrashFolder, - [ - accountId, - trashMailboxId, - ], - ), - returnValue: Future>.value(<_i13.EmailId>[]), - ) as _i4.Future>); - @override - _i4.Future<_i2.PresentationEmail> getEmailById( - _i6.AccountId? accountId, - _i13.EmailId? emailId, { - _i10.Properties? properties, - }) => - (super.noSuchMethod( - Invocation.method( - #getEmailById, - [ - accountId, - emailId, - ], - {#properties: properties}, - ), - returnValue: - Future<_i2.PresentationEmail>.value(_FakePresentationEmail_0()), - ) as _i4.Future<_i2.PresentationEmail>); -} + Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]), + returnValue: Future>.value(<_i12.EmailId>[])) + as _i3.Future>); +} \ No newline at end of file