From 98f297f24d84a68179d608fcadf22db44a54bb84 Mon Sep 17 00:00:00 2001 From: ManhNTX Date: Wed, 7 Sep 2022 10:32:04 +0700 Subject: [PATCH] TF-868: Unread/new emails are not loaded when opening folder --- ...0016-some-case-list-email-present-wrong.md | 22 +++++++ .../data/datasource/thread_datasource.dart | 2 +- .../local_thread_datasource_impl.dart | 4 +- .../thread_datasource_impl.dart | 2 +- .../data/local/email_cache_manager.dart | 7 ++- .../repository/thread_repository_impl.dart | 62 ++++++++++++++++--- .../domain/model/get_email_request.dart | 5 +- .../domain/repository/thread_repository.dart | 7 +-- ..._changes_emails_in_mailbox_interactor.dart | 9 +-- .../presentation/thread_controller.dart | 15 ++++- ...ails_in_mailbox_interactor_test.mocks.dart | 42 ++++++------- ...ges_emails_in_mailbox_interactor_test.dart | 8 ++- ...ails_in_mailbox_interactor_test.mocks.dart | 42 ++++++------- 13 files changed, 152 insertions(+), 75 deletions(-) create mode 100644 docs/adr/0016-some-case-list-email-present-wrong.md diff --git a/docs/adr/0016-some-case-list-email-present-wrong.md b/docs/adr/0016-some-case-list-email-present-wrong.md new file mode 100644 index 000000000..8ac2a4f5e --- /dev/null +++ b/docs/adr/0016-some-case-list-email-present-wrong.md @@ -0,0 +1,22 @@ +# 16. Fix some wrong cases email list presents + +Date: 2022-09-13 + +## Status + +- Issue: Mailbox A has cache with more than 20 filtered emails. +Then come back this mailbox in the next time, read-emails are not showed correctly. + +## Context + +- Root cause: list email cached not enough. + + +## Decision + +- Fill the cache with the first page of this mailbox at the first time open this mailbox. +- Get only the first page in the cache when open mailbox + +## Consequences + +- Email list presents correctly \ No newline at end of file diff --git a/lib/features/thread/data/datasource/thread_datasource.dart b/lib/features/thread/data/datasource/thread_datasource.dart index 51b6b82fa..86096c815 100644 --- a/lib/features/thread/data/datasource/thread_datasource.dart +++ b/lib/features/thread/data/datasource/thread_datasource.dart @@ -32,7 +32,7 @@ abstract class ThreadDataSource { } ); - Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption}); + Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption, UnsignedInt? limit}); Future update({List? updated, List? created, List? destroyed}); diff --git a/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart b/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart index d089b1666..8d7328ad8 100644 --- a/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart +++ b/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart @@ -46,9 +46,9 @@ class LocalThreadDataSourceImpl extends ThreadDataSource { } @override - Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption}) { + Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption, UnsignedInt? limit}) { return Future.sync(() async { - return await _emailCacheManager.getAllEmail(inMailboxId: inMailboxId, sort: sort, filterOption: filterOption ?? FilterMessageOption.all); + return await _emailCacheManager.getAllEmail(inMailboxId: inMailboxId, sort: sort, filterOption: filterOption ?? FilterMessageOption.all, limit: limit); }).catchError((error) { throw error; }); diff --git a/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart b/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart index 721aeb133..e7dc53c86 100644 --- a/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart +++ b/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart @@ -65,7 +65,7 @@ class ThreadDataSourceImpl extends ThreadDataSource { } @override - Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption}) { + Future> getAllEmailCache({MailboxId? inMailboxId, Set? sort, FilterMessageOption? filterOption, UnsignedInt? limit}) { throw UnimplementedError(); } diff --git a/lib/features/thread/data/local/email_cache_manager.dart b/lib/features/thread/data/local/email_cache_manager.dart index a0b79d8c8..0fb9a004b 100644 --- a/lib/features/thread/data/local/email_cache_manager.dart +++ b/lib/features/thread/data/local/email_cache_manager.dart @@ -1,5 +1,5 @@ - import 'package:core/core.dart'; +import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:model/model.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; @@ -21,6 +21,7 @@ class EmailCacheManager { Future> getAllEmail({ MailboxId? inMailboxId, Set? sort, + UnsignedInt? limit, FilterMessageOption filterOption = FilterMessageOption.all }) async { final emailCacheList = inMailboxId != null @@ -35,6 +36,10 @@ class EmailCacheManager { emailList.sortBy(comparator); } } + + if (limit != null && emailList.length > limit.value.toInt()) { + return emailList.getRange(0, limit.value.toInt()).toList(); + } return emailList; } diff --git a/lib/features/thread/data/repository/thread_repository_impl.dart b/lib/features/thread/data/repository/thread_repository_impl.dart index 18f751c77..7d16bd483 100644 --- a/lib/features/thread/data/repository/thread_repository_impl.dart +++ b/lib/features/thread/data/repository/thread_repository_impl.dart @@ -8,6 +8,7 @@ import 'package:jmap_dart_client/jmap/core/sort/comparator.dart'; import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; +import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart'; @@ -47,6 +48,7 @@ class ThreadRepositoryImpl extends ThreadRepository { mapDataSource[DataSourceType.local]!.getAllEmailCache( inMailboxId: emailFilter?.mailboxId, sort: sort, + limit: limit, filterOption: emailFilter?.filterOption), stateDataSource.getState(StateType.email) ]).then((List response) { @@ -64,7 +66,14 @@ class ThreadRepositoryImpl extends ThreadRepository { sort: sort, filter: emailFilter?.filter, properties: propertiesCreated); - + if (_isApproveFilterOption(emailFilter?.filterOption, networkEmailResponse.emailList)) { + _getFirstPage( + accountId, + sort: sort, + mailboxId: emailFilter?.mailboxId, + propertiesCreated: propertiesCreated, + ); + } yield networkEmailResponse; } else { yield localEmailResponse; @@ -127,6 +136,7 @@ class ThreadRepositoryImpl extends ThreadRepository { mapDataSource[DataSourceType.local]!.getAllEmailCache( inMailboxId: emailFilter?.mailboxId, sort: sort, + limit: limit, filterOption: emailFilter?.filterOption), stateDataSource.getState(StateType.email) ]).then((List response) { @@ -136,6 +146,31 @@ class ThreadRepositoryImpl extends ThreadRepository { yield newEmailResponse; } + bool _isApproveFilterOption(FilterMessageOption? filterOption, List? listEmailResponse) { + return filterOption != FilterMessageOption.all && listEmailResponse!.isNotEmpty; + } + + Future _getFirstPage( + AccountId accountId, + { + Set? sort, + MailboxId? mailboxId, + Properties? propertiesCreated, + Filter? filter, + } + ) async { + final networkEmailResponse = await mapDataSource[DataSourceType.network]!.getAllEmail( + accountId, + limit: ThreadConstants.defaultLimit, + sort: sort, + filter: filter ?? EmailFilterCondition(inMailbox: mailboxId), + properties: propertiesCreated, + ); + await _updateEmailCache(newCreated: networkEmailResponse.emailList); + + return networkEmailResponse; + } + Future?> _combineEmailCache({ List? emailUpdated, Properties? updatedProperties, @@ -185,19 +220,17 @@ class ThreadRepositoryImpl extends ThreadRepository { AccountId accountId, State currentState, { - UnsignedInt? limit, Set? sort, + EmailFilter? emailFilter, Properties? propertiesCreated, Properties? propertiesUpdated, - MailboxId? inMailboxId, - FilterMessageOption? filterOption, } ) async* { log('ThreadRepositoryImpl::refreshChanges(): $currentState'); final localEmailList = await mapDataSource[DataSourceType.local]!.getAllEmailCache( - inMailboxId: inMailboxId, + inMailboxId: emailFilter?.mailboxId, sort: sort, - filterOption: filterOption); + filterOption: emailFilter?.filterOption); EmailChangeResponse? emailChangeResponse; bool hasMoreChanges = true; @@ -237,13 +270,26 @@ class ThreadRepositoryImpl extends ThreadRepository { } final newEmailResponse = await Future.wait([ - mapDataSource[DataSourceType.local]!.getAllEmailCache(inMailboxId: inMailboxId, sort: sort, filterOption: filterOption), + mapDataSource[DataSourceType.local]!.getAllEmailCache(inMailboxId: emailFilter?.mailboxId, sort: sort, filterOption: emailFilter?.filterOption), stateDataSource.getState(StateType.email) ]).then((List response) { return EmailsResponse(emailList: response.first, state: response.last); }); - yield newEmailResponse; + if (!newEmailResponse.hasEmails() + || (newEmailResponse.emailList?.length ?? 0) < ThreadConstants.defaultLimit.value) { + final networkEmailResponse = await _getFirstPage( + accountId, + sort: sort, + filter: emailFilter?.filter, + mailboxId: emailFilter?.mailboxId, + propertiesCreated: propertiesCreated, + ); + + yield networkEmailResponse; + } else { + yield newEmailResponse; + } } @override diff --git a/lib/features/thread/domain/model/get_email_request.dart b/lib/features/thread/domain/model/get_email_request.dart index 8b7a35ee1..54541c0b4 100644 --- a/lib/features/thread/domain/model/get_email_request.dart +++ b/lib/features/thread/domain/model/get_email_request.dart @@ -5,12 +5,14 @@ import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/core/sort/comparator.dart'; +import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; class GetEmailRequest with EquatableMixin { final AccountId accountId; final UnsignedInt? limit; final Set? sort; final Filter? filter; + final FilterMessageOption? filterOption; final Properties? properties; final EmailId? lastEmailId; @@ -18,10 +20,11 @@ class GetEmailRequest with EquatableMixin { this.limit, this.sort, this.filter, + this.filterOption, this.properties, this.lastEmailId, }); @override - List get props => [limit, sort, filter, properties, lastEmailId]; + List get props => [limit, sort, filter, properties, lastEmailId, filterOption]; } \ No newline at end of file diff --git a/lib/features/thread/domain/repository/thread_repository.dart b/lib/features/thread/domain/repository/thread_repository.dart index 365a2a3d6..d1da5e145 100644 --- a/lib/features/thread/domain/repository/thread_repository.dart +++ b/lib/features/thread/domain/repository/thread_repository.dart @@ -1,7 +1,5 @@ import 'dart:async'; -import 'package:core/presentation/state/failure.dart'; -import 'package:core/presentation/state/success.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -12,9 +10,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart'; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart'; -import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart'; -import 'package:dartz/dartz.dart' as dartz; abstract class ThreadRepository { Stream getAllEmail( @@ -33,10 +29,9 @@ abstract class ThreadRepository { jmap.State currentState, { Set? sort, + EmailFilter? emailFilter, Properties? propertiesCreated, Properties? propertiesUpdated, - MailboxId? inMailboxId, - FilterMessageOption? filterOption, } ); diff --git a/lib/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart b/lib/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart index fb99ebaef..73a75689c 100644 --- a/lib/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart +++ b/lib/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart @@ -3,9 +3,8 @@ import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/sort/comparator.dart'; -import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; +import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart'; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart'; -import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'; import 'package:model/model.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; @@ -23,8 +22,7 @@ class RefreshChangesEmailsInMailboxInteractor { Set? sort, Properties? propertiesCreated, Properties? propertiesUpdated, - MailboxId? inMailboxId, - FilterMessageOption? filterOption, + EmailFilter? emailFilter, } ) async* { yield Right(RefreshingState()); @@ -37,8 +35,7 @@ class RefreshChangesEmailsInMailboxInteractor { sort: sort, propertiesCreated: propertiesCreated, propertiesUpdated: propertiesUpdated, - inMailboxId: inMailboxId, - filterOption: filterOption) + emailFilter: emailFilter) .map(_toGetEmailState); } catch (e) { yield Left(RefreshChangesAllEmailFailure(e)); diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 66990f4dc..b245fa4b7 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -431,8 +431,10 @@ class ThreadController extends BaseController { sort: _sortOrder, propertiesCreated: ThreadConstants.propertiesDefault, propertiesUpdated: ThreadConstants.propertiesUpdatedDefault, - inMailboxId: _currentMailboxId, - filterOption: mailboxDashBoardController.filterMessageOption.value + emailFilter: EmailFilter( + filter: _getFilterCondition(), + filterOption: mailboxDashBoardController.filterMessageOption.value, + mailboxId: _currentMailboxId), )); } } @@ -446,6 +448,7 @@ class ThreadController extends BaseController { _accountId!, limit: ThreadConstants.defaultLimit, sort: _sortOrder, + filterOption: mailboxDashBoardController.filterMessageOption.value, filter: _getFilterCondition(isLoadMore: true), properties: ThreadConstants.propertiesDefault, lastEmailId: emailList.last.id) @@ -453,9 +456,15 @@ class ThreadController extends BaseController { } } + bool _ableAppendLoadMore(List listEmail) { + return !(emailList.where((email) => (email.mailboxIds != null && !email.mailboxIds!.keys.contains(currentMailbox?.id)) || emailList.contains(email)).isNotEmpty); + } + void _loadMoreEmailsSuccess(LoadMoreEmailsSuccess success) { if (success.emailList.isNotEmpty) { - emailList.addAll(success.emailList); + if (_ableAppendLoadMore(success.emailList)){ + emailList.addAll(success.emailList); + } } else { canLoadMore = false; } 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 2d60a94ff..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 @@ -1,29 +1,29 @@ -// Mocks generated by Mockito 5.0.17 from annotations +// Mocks generated by Mockito 5.2.0 from annotations // in tmail_ui_user/test/features/thread/domain/usecases/get_emails_in_mailbox_interactor_test.dart. // Do not manually edit this file. +// ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; import 'package:jmap_dart_client/jmap/account_id.dart' as _i5; -import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i15; +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 _i14; -import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i11; +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:tmail_ui_user/features/thread/domain/model/email_filter.dart' as _i8; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart' as _i4; -import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart' - as _i12; import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart' - as _i13; + as _i11; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart' as _i2; +// ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references @@ -64,34 +64,32 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository { _i3.Stream<_i4.EmailsResponse> refreshChanges( _i5.AccountId? accountId, _i10.State? currentState, {Set<_i7.Comparator>? sort, + _i8.EmailFilter? emailFilter, _i9.Properties? propertiesCreated, - _i9.Properties? propertiesUpdated, - _i11.MailboxId? inMailboxId, - _i12.FilterMessageOption? filterOption}) => + _i9.Properties? propertiesUpdated}) => (super.noSuchMethod( Invocation.method(#refreshChanges, [ accountId, currentState ], { #sort: sort, + #emailFilter: emailFilter, #propertiesCreated: propertiesCreated, - #propertiesUpdated: propertiesUpdated, - #inMailboxId: inMailboxId, - #filterOption: filterOption + #propertiesUpdated: propertiesUpdated }), returnValue: Stream<_i4.EmailsResponse>.empty()) as _i3.Stream<_i4.EmailsResponse>); @override _i3.Stream<_i4.EmailsResponse> loadMoreEmails( - _i13.GetEmailRequest? emailRequest) => + _i11.GetEmailRequest? emailRequest) => (super.noSuchMethod(Invocation.method(#loadMoreEmails, [emailRequest]), returnValue: Stream<_i4.EmailsResponse>.empty()) as _i3.Stream<_i4.EmailsResponse>); @override - _i3.Future> searchEmails(_i5.AccountId? accountId, + _i3.Future> searchEmails(_i5.AccountId? accountId, {_i6.UnsignedInt? limit, Set<_i7.Comparator>? sort, - _i15.Filter? filter, + _i13.Filter? filter, _i9.Properties? properties}) => (super.noSuchMethod( Invocation.method(#searchEmails, [ @@ -102,13 +100,13 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository { #filter: filter, #properties: properties }), - returnValue: Future>.value(<_i14.Email>[])) - as _i3.Future>); + returnValue: Future>.value(<_i12.Email>[])) + as _i3.Future>); @override - _i3.Future> emptyTrashFolder( - _i5.AccountId? accountId, _i11.MailboxId? trashMailboxId) => + _i3.Future> emptyTrashFolder( + _i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) => (super.noSuchMethod( Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]), - returnValue: Future>.value(<_i14.EmailId>[])) - as _i3.Future>); + returnValue: Future>.value(<_i12.EmailId>[])) + as _i3.Future>); } diff --git a/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart b/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart index 0417b7550..1c4fcee8b 100644 --- a/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart +++ b/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart @@ -9,6 +9,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; +import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart'; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart'; import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart'; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart'; @@ -40,7 +41,8 @@ void main() { sort: Set()..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)), propertiesCreated: ThreadConstants.propertiesDefault, propertiesUpdated: ThreadConstants.propertiesUpdatedDefault, - inMailboxId: MailboxFixtures.inboxMailbox.id + emailFilter: EmailFilter( + mailboxId: MailboxFixtures.inboxMailbox.id) )).thenAnswer((_) => Stream.fromIterable({ EmailsResponse( emailList: { @@ -59,7 +61,9 @@ void main() { sort: Set()..add(EmailComparator(EmailComparatorProperty.sentAt)..setIsAscending(false)), propertiesCreated: ThreadConstants.propertiesDefault, propertiesUpdated: ThreadConstants.propertiesUpdatedDefault, - inMailboxId: MailboxFixtures.inboxMailbox.id); + emailFilter: EmailFilter( + mailboxId: MailboxFixtures.inboxMailbox.id), + ); final states = await streamStates.toList(); 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 ad6b718d8..498a5b734 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 @@ -1,29 +1,29 @@ -// Mocks generated by Mockito 5.0.17 from annotations +// Mocks generated by Mockito 5.2.0 from annotations // in tmail_ui_user/test/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor_test.dart. // Do not manually edit this file. +// ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; import 'package:jmap_dart_client/jmap/account_id.dart' as _i5; -import 'package:jmap_dart_client/jmap/core/filter/filter.dart' as _i15; +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 _i14; -import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart' as _i11; +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:tmail_ui_user/features/thread/domain/model/email_filter.dart' as _i8; import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart' as _i4; -import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart' - as _i12; import 'package:tmail_ui_user/features/thread/domain/model/get_email_request.dart' - as _i13; + as _i11; import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart' as _i2; +// ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references @@ -64,34 +64,32 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository { _i3.Stream<_i4.EmailsResponse> refreshChanges( _i5.AccountId? accountId, _i10.State? currentState, {Set<_i7.Comparator>? sort, + _i8.EmailFilter? emailFilter, _i9.Properties? propertiesCreated, - _i9.Properties? propertiesUpdated, - _i11.MailboxId? inMailboxId, - _i12.FilterMessageOption? filterOption}) => + _i9.Properties? propertiesUpdated}) => (super.noSuchMethod( Invocation.method(#refreshChanges, [ accountId, currentState ], { #sort: sort, + #emailFilter: emailFilter, #propertiesCreated: propertiesCreated, - #propertiesUpdated: propertiesUpdated, - #inMailboxId: inMailboxId, - #filterOption: filterOption + #propertiesUpdated: propertiesUpdated }), returnValue: Stream<_i4.EmailsResponse>.empty()) as _i3.Stream<_i4.EmailsResponse>); @override _i3.Stream<_i4.EmailsResponse> loadMoreEmails( - _i13.GetEmailRequest? emailRequest) => + _i11.GetEmailRequest? emailRequest) => (super.noSuchMethod(Invocation.method(#loadMoreEmails, [emailRequest]), returnValue: Stream<_i4.EmailsResponse>.empty()) as _i3.Stream<_i4.EmailsResponse>); @override - _i3.Future> searchEmails(_i5.AccountId? accountId, + _i3.Future> searchEmails(_i5.AccountId? accountId, {_i6.UnsignedInt? limit, Set<_i7.Comparator>? sort, - _i15.Filter? filter, + _i13.Filter? filter, _i9.Properties? properties}) => (super.noSuchMethod( Invocation.method(#searchEmails, [ @@ -102,13 +100,13 @@ class MockThreadRepository extends _i1.Mock implements _i2.ThreadRepository { #filter: filter, #properties: properties }), - returnValue: Future>.value(<_i14.Email>[])) - as _i3.Future>); + returnValue: Future>.value(<_i12.Email>[])) + as _i3.Future>); @override - _i3.Future> emptyTrashFolder( - _i5.AccountId? accountId, _i11.MailboxId? trashMailboxId) => + _i3.Future> emptyTrashFolder( + _i5.AccountId? accountId, _i14.MailboxId? trashMailboxId) => (super.noSuchMethod( Invocation.method(#emptyTrashFolder, [accountId, trashMailboxId]), - returnValue: Future>.value(<_i14.EmailId>[])) - as _i3.Future>); + returnValue: Future>.value(<_i12.EmailId>[])) + as _i3.Future>); }