TF-1363: [Presentation] Fix margin for SpamReportBannerMobile and add check condition UnreadSpamNumber

This commit is contained in:
HuyNguyen
2023-01-16 17:35:53 +07:00
committed by Dat H. Pham
parent 04fd640384
commit 272a36fdbc
6 changed files with 160 additions and 251 deletions
@@ -1123,9 +1123,7 @@ class MailboxController extends BaseMailboxController {
break; break;
case MailboxActions.disableSpamReport: case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport: case MailboxActions.enableSpamReport:
final _currentSpamReportState = mailboxDashBoardController.enableSpamRepot; mailboxDashBoardController.storeSpamReportStateAction();
final _storeSpamReportState = _currentSpamReportState ? SpamReportState.disabled : SpamReportState.enabled;
mailboxDashBoardController.storeSpamReportStateAction(_storeSpamReportState);
return; return;
default: default:
break; break;
@@ -28,11 +28,15 @@ class GetUnreadSpamMailboxInteractor {
final _checkTimeCondition = (_timeLast.inHours > 0) && (_timeLast.inHours > conditionsForDisplayingSpamReportBanner); final _checkTimeCondition = (_timeLast.inHours > 0) && (_timeLast.inHours > conditionsForDisplayingSpamReportBanner);
if (true) { if (_checkTimeCondition) {
final _response = await _spamReportRepository.getUnreadSpamMailbox(accountId, mailboxFilterCondition: mailboxFilterCondition, limit: limit); final _response = await _spamReportRepository.getUnreadSpamMailbox(accountId, mailboxFilterCondition: mailboxFilterCondition, limit: limit);
final _unreadSpamMailbox = _response.unreadSpamMailbox; final _unreadSpamMailbox = _response.unreadSpamMailbox;
yield Right(GetUnreadSpamMailboxSuccess(_unreadSpamMailbox!)); if (_unreadSpamMailbox!.unreadEmails!.value.value > 0) {
yield Right(GetUnreadSpamMailboxSuccess(_unreadSpamMailbox));
} else {
yield Left(InvalidSpamReportCondition());
}
} else { } else {
yield Left(InvalidSpamReportCondition()); yield Left(InvalidSpamReportCondition());
} }
@@ -1535,8 +1535,9 @@ class MailboxDashBoardController extends ReloadableController {
} }
} }
void storeSpamReportStateAction(SpamReportState spamReportState) { void storeSpamReportStateAction() {
spamReportController.storeSpamReportStateAction(spamReportState); final _storeSpamReportState = enableSpamRepot ? SpamReportState.disabled : SpamReportState.enabled;
spamReportController.storeSpamReportStateAction(_storeSpamReportState);
} }
@override @override
@@ -20,7 +20,9 @@ class SpamReportBannerWidget extends StatelessWidget {
} }
return Container( return Container(
height: 124, height: 124,
margin: const EdgeInsets.all(16), margin: const EdgeInsets.only(
top: 12, left: 16, right: 16, bottom: 16
),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
border: Border.all(color: AppColor.colorBorderBodyThread, width: 1), border: Border.all(color: AppColor.colorBorderBodyThread, width: 1),
@@ -3,26 +3,25 @@
// Do not manually edit this file. // Do not manually edit this file.
// ignore_for_file: no_leading_underscores_for_library_prefixes // 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/account_id.dart' as _i5;
import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i14; import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i13;
import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i10; import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9;
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i8; import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i7;
import 'package:jmap_dart_client/jmap/core/state.dart' as _i11; import 'package:jmap_dart_client/jmap/core/state.dart' as _i10;
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i7; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6;
import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i13; import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i12;
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i15; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i14;
import 'package:mockito/mockito.dart' as _i1; 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' 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' 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' 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' import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'
as _i3; as _i2;
// ignore_for_file: type=lint // ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values // 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: unnecessary_parenthesis
// ignore_for_file: camel_case_types // ignore_for_file: camel_case_types
class _FakePresentationEmail_0 extends _i1.Fake
implements _i2.PresentationEmail {}
/// A class which mocks [ThreadRepository]. /// A class which mocks [ThreadRepository].
/// ///
/// See the documentation for Mockito's code generation for more information. /// 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() { MockThreadRepository() {
_i1.throwOnMissingStub(this); _i1.throwOnMissingStub(this);
} }
@override @override
_i4.Stream<_i5.EmailsResponse> getAllEmail( _i3.Stream<_i4.EmailsResponse> getAllEmail(_i5.AccountId? accountId,
_i6.AccountId? accountId, { {_i6.UnsignedInt? limit,
_i7.UnsignedInt? limit, Set<_i7.Comparator>? sort,
Set<_i8.Comparator>? sort, _i8.EmailFilter? emailFilter,
_i9.EmailFilter? emailFilter, _i9.Properties? propertiesCreated,
_i10.Properties? propertiesCreated, _i9.Properties? propertiesUpdated}) =>
_i10.Properties? propertiesUpdated,
}) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#getAllEmail, [
#getAllEmail, accountId
[accountId], ], {
{ #limit: limit,
#limit: limit, #sort: sort,
#sort: sort, #emailFilter: emailFilter,
#emailFilter: emailFilter, #propertiesCreated: propertiesCreated,
#propertiesCreated: propertiesCreated, #propertiesUpdated: propertiesUpdated
#propertiesUpdated: propertiesUpdated, }),
}, returnValue: Stream<_i4.EmailsResponse>.empty())
), as _i3.Stream<_i4.EmailsResponse>);
returnValue: Stream<_i5.EmailsResponse>.empty(),
) as _i4.Stream<_i5.EmailsResponse>);
@override @override
_i4.Stream<_i5.EmailsResponse> refreshChanges( _i3.Stream<_i4.EmailsResponse> refreshChanges(
_i6.AccountId? accountId, _i5.AccountId? accountId, _i10.State? currentState,
_i11.State? currentState, { {Set<_i7.Comparator>? sort,
Set<_i8.Comparator>? sort, _i8.EmailFilter? emailFilter,
_i9.EmailFilter? emailFilter, _i9.Properties? propertiesCreated,
_i10.Properties? propertiesCreated, _i9.Properties? propertiesUpdated}) =>
_i10.Properties? propertiesUpdated,
}) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#refreshChanges, [
#refreshChanges, accountId,
[ currentState
accountId, ], {
currentState, #sort: sort,
], #emailFilter: emailFilter,
{ #propertiesCreated: propertiesCreated,
#sort: sort, #propertiesUpdated: propertiesUpdated
#emailFilter: emailFilter, }),
#propertiesCreated: propertiesCreated, returnValue: Stream<_i4.EmailsResponse>.empty())
#propertiesUpdated: propertiesUpdated, as _i3.Stream<_i4.EmailsResponse>);
},
),
returnValue: Stream<_i5.EmailsResponse>.empty(),
) as _i4.Stream<_i5.EmailsResponse>);
@override @override
_i4.Stream<_i5.EmailsResponse> loadMoreEmails( _i3.Stream<_i4.EmailsResponse> loadMoreEmails(
_i12.GetEmailRequest? emailRequest) => _i11.GetEmailRequest? emailRequest) =>
(super.noSuchMethod( (super.noSuchMethod(Invocation.method(#loadMoreEmails, [emailRequest]),
Invocation.method( returnValue: Stream<_i4.EmailsResponse>.empty())
#loadMoreEmails, as _i3.Stream<_i4.EmailsResponse>);
[emailRequest],
),
returnValue: Stream<_i5.EmailsResponse>.empty(),
) as _i4.Stream<_i5.EmailsResponse>);
@override @override
_i4.Future<List<_i13.Email>> searchEmails( _i3.Future<List<_i12.Email>> searchEmails(_i5.AccountId? accountId,
_i6.AccountId? accountId, { {_i6.UnsignedInt? limit,
_i7.UnsignedInt? limit, Set<_i7.Comparator>? sort,
Set<_i8.Comparator>? sort, _i13.Filter? filter,
_i14.Filter? filter, _i9.Properties? properties}) =>
_i10.Properties? properties,
}) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#searchEmails, [
#searchEmails, accountId
[accountId], ], {
{ #limit: limit,
#limit: limit, #sort: sort,
#sort: sort, #filter: filter,
#filter: filter, #properties: properties
#properties: properties, }),
}, returnValue: Future<List<_i12.Email>>.value(<_i12.Email>[]))
), as _i3.Future<List<_i12.Email>>);
returnValue: Future<List<_i13.Email>>.value(<_i13.Email>[]),
) as _i4.Future<List<_i13.Email>>);
@override @override
_i4.Future<List<_i13.EmailId>> emptyTrashFolder( _i3.Future<List<_i12.EmailId>> emptyTrashFolder(
_i6.AccountId? accountId, _i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) =>
_i15.MailboxId? trashMailboxId,
) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]),
#emptyTrashFolder, returnValue: Future<List<_i12.EmailId>>.value(<_i12.EmailId>[]))
[ as _i3.Future<List<_i12.EmailId>>);
accountId,
trashMailboxId,
],
),
returnValue: Future<List<_i13.EmailId>>.value(<_i13.EmailId>[]),
) as _i4.Future<List<_i13.EmailId>>);
@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>);
} }
@@ -3,26 +3,25 @@
// Do not manually edit this file. // Do not manually edit this file.
// ignore_for_file: no_leading_underscores_for_library_prefixes // 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/account_id.dart' as _i5;
import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i14; import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i13;
import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i10; import 'package:jmap_dart_client/jmap/core/properties/properties.dart' as _i9;
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i8; import 'package:jmap_dart_client/jmap/core/sort/comparator.dart' as _i7;
import 'package:jmap_dart_client/jmap/core/state.dart' as _i11; import 'package:jmap_dart_client/jmap/core/state.dart' as _i10;
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i7; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' as _i6;
import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i13; import 'package:jmap_dart_client/jmap/mail/email/email.dart' as _i12;
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i15; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i14;
import 'package:mockito/mockito.dart' as _i1; 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' 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' 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' 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' import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'
as _i3; as _i2;
// ignore_for_file: type=lint // ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values // 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: unnecessary_parenthesis
// ignore_for_file: camel_case_types // ignore_for_file: camel_case_types
class _FakePresentationEmail_0 extends _i1.Fake
implements _i2.PresentationEmail {}
/// A class which mocks [ThreadRepository]. /// A class which mocks [ThreadRepository].
/// ///
/// See the documentation for Mockito's code generation for more information. /// 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() { MockThreadRepository() {
_i1.throwOnMissingStub(this); _i1.throwOnMissingStub(this);
} }
@override @override
_i4.Stream<_i5.EmailsResponse> getAllEmail( _i3.Stream<_i4.EmailsResponse> getAllEmail(_i5.AccountId? accountId,
_i6.AccountId? accountId, { {_i6.UnsignedInt? limit,
_i7.UnsignedInt? limit, Set<_i7.Comparator>? sort,
Set<_i8.Comparator>? sort, _i8.EmailFilter? emailFilter,
_i9.EmailFilter? emailFilter, _i9.Properties? propertiesCreated,
_i10.Properties? propertiesCreated, _i9.Properties? propertiesUpdated}) =>
_i10.Properties? propertiesUpdated,
}) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#getAllEmail, [
#getAllEmail, accountId
[accountId], ], {
{ #limit: limit,
#limit: limit, #sort: sort,
#sort: sort, #emailFilter: emailFilter,
#emailFilter: emailFilter, #propertiesCreated: propertiesCreated,
#propertiesCreated: propertiesCreated, #propertiesUpdated: propertiesUpdated
#propertiesUpdated: propertiesUpdated, }),
}, returnValue: Stream<_i4.EmailsResponse>.empty())
), as _i3.Stream<_i4.EmailsResponse>);
returnValue: Stream<_i5.EmailsResponse>.empty(),
) as _i4.Stream<_i5.EmailsResponse>);
@override @override
_i4.Stream<_i5.EmailsResponse> refreshChanges( _i3.Stream<_i4.EmailsResponse> refreshChanges(
_i6.AccountId? accountId, _i5.AccountId? accountId, _i10.State? currentState,
_i11.State? currentState, { {Set<_i7.Comparator>? sort,
Set<_i8.Comparator>? sort, _i8.EmailFilter? emailFilter,
_i9.EmailFilter? emailFilter, _i9.Properties? propertiesCreated,
_i10.Properties? propertiesCreated, _i9.Properties? propertiesUpdated}) =>
_i10.Properties? propertiesUpdated,
}) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#refreshChanges, [
#refreshChanges, accountId,
[ currentState
accountId, ], {
currentState, #sort: sort,
], #emailFilter: emailFilter,
{ #propertiesCreated: propertiesCreated,
#sort: sort, #propertiesUpdated: propertiesUpdated
#emailFilter: emailFilter, }),
#propertiesCreated: propertiesCreated, returnValue: Stream<_i4.EmailsResponse>.empty())
#propertiesUpdated: propertiesUpdated, as _i3.Stream<_i4.EmailsResponse>);
},
),
returnValue: Stream<_i5.EmailsResponse>.empty(),
) as _i4.Stream<_i5.EmailsResponse>);
@override @override
_i4.Stream<_i5.EmailsResponse> loadMoreEmails( _i3.Stream<_i4.EmailsResponse> loadMoreEmails(
_i12.GetEmailRequest? emailRequest) => _i11.GetEmailRequest? emailRequest) =>
(super.noSuchMethod( (super.noSuchMethod(Invocation.method(#loadMoreEmails, [emailRequest]),
Invocation.method( returnValue: Stream<_i4.EmailsResponse>.empty())
#loadMoreEmails, as _i3.Stream<_i4.EmailsResponse>);
[emailRequest],
),
returnValue: Stream<_i5.EmailsResponse>.empty(),
) as _i4.Stream<_i5.EmailsResponse>);
@override @override
_i4.Future<List<_i13.Email>> searchEmails( _i3.Future<List<_i12.Email>> searchEmails(_i5.AccountId? accountId,
_i6.AccountId? accountId, { {_i6.UnsignedInt? limit,
_i7.UnsignedInt? limit, Set<_i7.Comparator>? sort,
Set<_i8.Comparator>? sort, _i13.Filter? filter,
_i14.Filter? filter, _i9.Properties? properties}) =>
_i10.Properties? properties,
}) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#searchEmails, [
#searchEmails, accountId
[accountId], ], {
{ #limit: limit,
#limit: limit, #sort: sort,
#sort: sort, #filter: filter,
#filter: filter, #properties: properties
#properties: properties, }),
}, returnValue: Future<List<_i12.Email>>.value(<_i12.Email>[]))
), as _i3.Future<List<_i12.Email>>);
returnValue: Future<List<_i13.Email>>.value(<_i13.Email>[]),
) as _i4.Future<List<_i13.Email>>);
@override @override
_i4.Future<List<_i13.EmailId>> emptyTrashFolder( _i3.Future<List<_i12.EmailId>> emptyTrashFolder(
_i6.AccountId? accountId, _i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) =>
_i15.MailboxId? trashMailboxId,
) =>
(super.noSuchMethod( (super.noSuchMethod(
Invocation.method( Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]),
#emptyTrashFolder, returnValue: Future<List<_i12.EmailId>>.value(<_i12.EmailId>[]))
[ as _i3.Future<List<_i12.EmailId>>);
accountId, }
trashMailboxId,
],
),
returnValue: Future<List<_i13.EmailId>>.value(<_i13.EmailId>[]),
) as _i4.Future<List<_i13.EmailId>>);
@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>);
}