Use GetAllEmails instead of RefreshAll Interactor

This commit is contained in:
Dat PHAM HOANG
2022-04-26 10:45:45 +07:00
committed by Dat H. Pham
parent 9c53b4a948
commit a66b33472d
5 changed files with 4 additions and 118 deletions
@@ -189,6 +189,7 @@ class ThreadRepositoryImpl extends ThreadRepository {
FilterMessageOption? filterOption,
}
) async* {
log('ThreadRepositoryImpl::refreshChanges(): $currentState');
final localEmailList = await mapDataSource[DataSourceType.local]!.getAllEmailCache(
inMailboxId: inMailboxId,
sort: sort,
@@ -289,42 +290,6 @@ class ThreadRepositoryImpl extends ThreadRepository {
return emailResponse.emailList ?? List.empty();
}
@override
Stream<EmailsResponse> refreshAll(
AccountId accountId,
{
UnsignedInt? limit,
Set<Comparator>? sort,
EmailFilter? emailFilter,
Properties? propertiesCreated,
Properties? propertiesUpdated,
}
) async* {
EmailsResponse? networkEmailResponse = await mapDataSource[DataSourceType.network]!.getAllEmail(
accountId,
limit: limit,
sort: sort,
filter: emailFilter?.filter,
properties: propertiesCreated);
await _updateEmailCache(newCreated: networkEmailResponse.emailList);
if (networkEmailResponse.state != null) {
await _updateState(networkEmailResponse.state!);
}
final newEmailResponse = await Future.wait([
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;
}
@override
Future<bool> emptyTrashFolder(AccountId accountId, MailboxId trashMailboxId) async {
var finalResult = true;
@@ -22,17 +22,6 @@ abstract class ThreadRepository {
}
);
Stream<EmailsResponse> refreshAll(
AccountId accountId,
{
UnsignedInt? limit,
Set<Comparator>? sort,
EmailFilter? emailFilter,
Properties? propertiesCreated,
Properties? propertiesUpdated,
}
);
Stream<EmailsResponse> refreshChanges(
AccountId accountId,
jmap.State currentState,
@@ -1,52 +0,0 @@
import 'package:core/core.dart';
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/core/unsigned_int.dart';
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart';
import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart';
import 'package:model/model.dart';
class RefreshAllEmailsInMailboxInteractor {
final ThreadRepository threadRepository;
RefreshAllEmailsInMailboxInteractor(this.threadRepository);
Stream<Either<Failure, Success>> execute(
AccountId accountId,
{
UnsignedInt? limit,
Set<Comparator>? sort,
EmailFilter? emailFilter,
Properties? propertiesCreated,
Properties? propertiesUpdated,
}
) async* {
try {
yield Right<Failure, Success>(LoadingState());
yield* threadRepository
.refreshAll(
accountId,
limit: limit,
sort: sort,
emailFilter: emailFilter,
propertiesCreated: propertiesCreated,
propertiesUpdated: propertiesUpdated)
.map(_toGetEmailState);
} catch (e) {
yield Left(GetAllEmailFailure(e));
}
}
Either<Failure, Success> _toGetEmailState(EmailsResponse emailResponse) {
final presentationEmailList = emailResponse.emailList
?.map((email) => email.toPresentationEmail()).toList() ?? List.empty();
return Right<Failure, Success>(GetAllEmailSuccess(
emailList: presentationEmailList,
currentEmailState: emailResponse.state));
}
}
@@ -11,8 +11,8 @@ import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/state_datasource_impl.dart';
@@ -27,9 +27,8 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/empty_trash_folder
import 'package:tmail_ui_user/features/thread/domain/usecases/get_emails_in_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/load_more_emails_in_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_all_emails_in_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
@@ -41,7 +40,6 @@ class ThreadBindings extends BaseBindings {
void bindingsController() {
Get.put(ThreadController(
Get.find<GetEmailsInMailboxInteractor>(),
Get.find<RefreshAllEmailsInMailboxInteractor>(),
Get.find<MarkAsMultipleEmailReadInteractor>(),
Get.find<MoveMultipleEmailToMailboxInteractor>(),
Get.find<MarkAsStarEmailInteractor>(),
@@ -80,7 +78,6 @@ class ThreadBindings extends BaseBindings {
@override
void bindingsInteractor() {
Get.lazyPut(() => GetEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
Get.lazyPut(() => RefreshAllEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find<EmailRepository>()));
Get.lazyPut(() => MarkAsMultipleEmailReadInteractor(Get.find<EmailRepository>()));
Get.lazyPut(() => MoveToMailboxInteractor(Get.find<EmailRepository>()));
@@ -56,7 +56,6 @@ import 'package:tmail_ui_user/features/thread/domain/usecases/load_more_emails_i
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_multiple_email_read_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/mark_as_star_multiple_email_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/move_multiple_email_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_all_emails_in_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/refresh_changes_emails_in_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/search_email_interactor.dart';
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_email_interactor.dart';
@@ -75,7 +74,6 @@ class ThreadController extends BaseController {
final _appToast = Get.find<AppToast>();
final GetEmailsInMailboxInteractor _getEmailsInMailboxInteractor;
final RefreshAllEmailsInMailboxInteractor _refreshAllEmailsInMailboxInteractor;
final MarkAsMultipleEmailReadInteractor _markAsMultipleEmailReadInteractor;
final MoveMultipleEmailToMailboxInteractor _moveMultipleEmailToMailboxInteractor;
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
@@ -112,7 +110,6 @@ class ThreadController extends BaseController {
ThreadController(
this._getEmailsInMailboxInteractor,
this._refreshAllEmailsInMailboxInteractor,
this._markAsMultipleEmailReadInteractor,
this._moveMultipleEmailToMailboxInteractor,
this._markAsStarEmailInteractor,
@@ -377,17 +374,7 @@ class ThreadController extends BaseController {
cancelSelectEmail();
if (_accountId != null) {
consumeState(_refreshAllEmailsInMailboxInteractor.execute(
_accountId!,
limit: ThreadConstants.defaultLimit,
sort: _sortOrder,
emailFilter: EmailFilter(
filter: _getFilterCondition(),
filterOption: mailboxDashBoardController.filterMessageOption.value,
mailboxId: _currentMailboxId),
propertiesCreated: ThreadConstants.propertiesDefault,
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
));
_getAllEmail();
}
}