Use GetAllEmails instead of RefreshAll Interactor
This commit is contained in:
committed by
Dat H. Pham
parent
9c53b4a948
commit
a66b33472d
@@ -189,6 +189,7 @@ class ThreadRepositoryImpl extends ThreadRepository {
|
|||||||
FilterMessageOption? filterOption,
|
FilterMessageOption? filterOption,
|
||||||
}
|
}
|
||||||
) async* {
|
) async* {
|
||||||
|
log('ThreadRepositoryImpl::refreshChanges(): $currentState');
|
||||||
final localEmailList = await mapDataSource[DataSourceType.local]!.getAllEmailCache(
|
final localEmailList = await mapDataSource[DataSourceType.local]!.getAllEmailCache(
|
||||||
inMailboxId: inMailboxId,
|
inMailboxId: inMailboxId,
|
||||||
sort: sort,
|
sort: sort,
|
||||||
@@ -289,42 +290,6 @@ class ThreadRepositoryImpl extends ThreadRepository {
|
|||||||
return emailResponse.emailList ?? List.empty();
|
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
|
@override
|
||||||
Future<bool> emptyTrashFolder(AccountId accountId, MailboxId trashMailboxId) async {
|
Future<bool> emptyTrashFolder(AccountId accountId, MailboxId trashMailboxId) async {
|
||||||
var finalResult = true;
|
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(
|
Stream<EmailsResponse> refreshChanges(
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
jmap.State currentState,
|
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/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/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/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_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/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/state_datasource.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/state_datasource_impl.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/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/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/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/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/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_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_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() {
|
void bindingsController() {
|
||||||
Get.put(ThreadController(
|
Get.put(ThreadController(
|
||||||
Get.find<GetEmailsInMailboxInteractor>(),
|
Get.find<GetEmailsInMailboxInteractor>(),
|
||||||
Get.find<RefreshAllEmailsInMailboxInteractor>(),
|
|
||||||
Get.find<MarkAsMultipleEmailReadInteractor>(),
|
Get.find<MarkAsMultipleEmailReadInteractor>(),
|
||||||
Get.find<MoveMultipleEmailToMailboxInteractor>(),
|
Get.find<MoveMultipleEmailToMailboxInteractor>(),
|
||||||
Get.find<MarkAsStarEmailInteractor>(),
|
Get.find<MarkAsStarEmailInteractor>(),
|
||||||
@@ -80,7 +78,6 @@ class ThreadBindings extends BaseBindings {
|
|||||||
@override
|
@override
|
||||||
void bindingsInteractor() {
|
void bindingsInteractor() {
|
||||||
Get.lazyPut(() => GetEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
|
Get.lazyPut(() => GetEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
|
||||||
Get.lazyPut(() => RefreshAllEmailsInMailboxInteractor(Get.find<ThreadRepository>()));
|
|
||||||
Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find<EmailRepository>()));
|
Get.lazyPut(() => MarkAsEmailReadInteractor(Get.find<EmailRepository>()));
|
||||||
Get.lazyPut(() => MarkAsMultipleEmailReadInteractor(Get.find<EmailRepository>()));
|
Get.lazyPut(() => MarkAsMultipleEmailReadInteractor(Get.find<EmailRepository>()));
|
||||||
Get.lazyPut(() => MoveToMailboxInteractor(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_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/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/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/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_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/usecases/search_more_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 _appToast = Get.find<AppToast>();
|
||||||
|
|
||||||
final GetEmailsInMailboxInteractor _getEmailsInMailboxInteractor;
|
final GetEmailsInMailboxInteractor _getEmailsInMailboxInteractor;
|
||||||
final RefreshAllEmailsInMailboxInteractor _refreshAllEmailsInMailboxInteractor;
|
|
||||||
final MarkAsMultipleEmailReadInteractor _markAsMultipleEmailReadInteractor;
|
final MarkAsMultipleEmailReadInteractor _markAsMultipleEmailReadInteractor;
|
||||||
final MoveMultipleEmailToMailboxInteractor _moveMultipleEmailToMailboxInteractor;
|
final MoveMultipleEmailToMailboxInteractor _moveMultipleEmailToMailboxInteractor;
|
||||||
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
|
final MarkAsStarEmailInteractor _markAsStarEmailInteractor;
|
||||||
@@ -112,7 +110,6 @@ class ThreadController extends BaseController {
|
|||||||
|
|
||||||
ThreadController(
|
ThreadController(
|
||||||
this._getEmailsInMailboxInteractor,
|
this._getEmailsInMailboxInteractor,
|
||||||
this._refreshAllEmailsInMailboxInteractor,
|
|
||||||
this._markAsMultipleEmailReadInteractor,
|
this._markAsMultipleEmailReadInteractor,
|
||||||
this._moveMultipleEmailToMailboxInteractor,
|
this._moveMultipleEmailToMailboxInteractor,
|
||||||
this._markAsStarEmailInteractor,
|
this._markAsStarEmailInteractor,
|
||||||
@@ -377,17 +374,7 @@ class ThreadController extends BaseController {
|
|||||||
cancelSelectEmail();
|
cancelSelectEmail();
|
||||||
|
|
||||||
if (_accountId != null) {
|
if (_accountId != null) {
|
||||||
consumeState(_refreshAllEmailsInMailboxInteractor.execute(
|
_getAllEmail();
|
||||||
_accountId!,
|
|
||||||
limit: ThreadConstants.defaultLimit,
|
|
||||||
sort: _sortOrder,
|
|
||||||
emailFilter: EmailFilter(
|
|
||||||
filter: _getFilterCondition(),
|
|
||||||
filterOption: mailboxDashBoardController.filterMessageOption.value,
|
|
||||||
mailboxId: _currentMailboxId),
|
|
||||||
propertiesCreated: ThreadConstants.propertiesDefault,
|
|
||||||
propertiesUpdated: ThreadConstants.propertiesUpdatedDefault,
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user