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;
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;
@@ -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());
}
@@ -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
@@ -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),
@@ -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<List<_i13.Email>> searchEmails(
_i6.AccountId? accountId, {
_i7.UnsignedInt? limit,
Set<_i8.Comparator>? sort,
_i14.Filter? filter,
_i10.Properties? properties,
}) =>
_i3.Future<List<_i12.Email>> 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<List<_i13.Email>>.value(<_i13.Email>[]),
) as _i4.Future<List<_i13.Email>>);
Invocation.method(#searchEmails, [
accountId
], {
#limit: limit,
#sort: sort,
#filter: filter,
#properties: properties
}),
returnValue: Future<List<_i12.Email>>.value(<_i12.Email>[]))
as _i3.Future<List<_i12.Email>>);
@override
_i4.Future<List<_i13.EmailId>> emptyTrashFolder(
_i6.AccountId? accountId,
_i15.MailboxId? trashMailboxId,
) =>
_i3.Future<List<_i12.EmailId>> emptyTrashFolder(
_i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) =>
(super.noSuchMethod(
Invocation.method(
#emptyTrashFolder,
[
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>);
Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]),
returnValue: Future<List<_i12.EmailId>>.value(<_i12.EmailId>[]))
as _i3.Future<List<_i12.EmailId>>);
}
@@ -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<List<_i13.Email>> searchEmails(
_i6.AccountId? accountId, {
_i7.UnsignedInt? limit,
Set<_i8.Comparator>? sort,
_i14.Filter? filter,
_i10.Properties? properties,
}) =>
_i3.Future<List<_i12.Email>> 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<List<_i13.Email>>.value(<_i13.Email>[]),
) as _i4.Future<List<_i13.Email>>);
Invocation.method(#searchEmails, [
accountId
], {
#limit: limit,
#sort: sort,
#filter: filter,
#properties: properties
}),
returnValue: Future<List<_i12.Email>>.value(<_i12.Email>[]))
as _i3.Future<List<_i12.Email>>);
@override
_i4.Future<List<_i13.EmailId>> emptyTrashFolder(
_i6.AccountId? accountId,
_i15.MailboxId? trashMailboxId,
) =>
_i3.Future<List<_i12.EmailId>> emptyTrashFolder(
_i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) =>
(super.noSuchMethod(
Invocation.method(
#emptyTrashFolder,
[
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>);
}
Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]),
returnValue: Future<List<_i12.EmailId>>.value(<_i12.EmailId>[]))
as _i3.Future<List<_i12.EmailId>>);
}