From 53793c6d5b892f6a2a00bcf4fd92cb8432005062 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 24 Nov 2022 14:25:01 +0700 Subject: [PATCH] TF-438 Implement get stored old email state --- .../state/get_stored_state_email_state.dart | 31 +++++++++++++++++++ .../get_stored_email_state_interactor.dart | 25 +++++++++++++++ .../email/presentation/email_bindings.dart | 2 ++ 3 files changed, 58 insertions(+) create mode 100644 lib/features/email/domain/state/get_stored_state_email_state.dart create mode 100644 lib/features/email/domain/usecases/get_stored_email_state_interactor.dart diff --git a/lib/features/email/domain/state/get_stored_state_email_state.dart b/lib/features/email/domain/state/get_stored_state_email_state.dart new file mode 100644 index 000000000..63612704a --- /dev/null +++ b/lib/features/email/domain/state/get_stored_state_email_state.dart @@ -0,0 +1,31 @@ + +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; + +class GetStoredEmailStateSuccess extends UIState { + + final jmap.State state; + + GetStoredEmailStateSuccess(this.state); + + @override + List get props => [state]; +} + +class NotFoundEmailState extends FeatureFailure { + + NotFoundEmailState(); + + @override + List get props => []; +} + +class GetStoredEmailStateFailure extends FeatureFailure { + final dynamic exception; + + GetStoredEmailStateFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart b/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart new file mode 100644 index 000000000..effd5531f --- /dev/null +++ b/lib/features/email/domain/usecases/get_stored_email_state_interactor.dart @@ -0,0 +1,25 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; +import 'package:tmail_ui_user/features/email/domain/state/get_stored_state_email_state.dart'; + +class GetStoredEmailStateInteractor { + final EmailRepository _emailRepository; + + GetStoredEmailStateInteractor(this._emailRepository); + + Stream> execute(AccountId accountId) async* { + try { + final state = await _emailRepository.getEmailState(); + if (state != null) { + yield Right(GetStoredEmailStateSuccess(state)); + } else { + yield Left(NotFoundEmailState()); + } + } catch (e) { + yield Left(GetStoredEmailStateFailure(e)); + } + } +} \ No newline at end of file diff --git a/lib/features/email/presentation/email_bindings.dart b/lib/features/email/presentation/email_bindings.dart index 7d1cec878..0d4a1479d 100644 --- a/lib/features/email/presentation/email_bindings.dart +++ b/lib/features/email/presentation/email_bindings.dart @@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/email/domain/usecases/download_attachment import 'package:tmail_ui_user/features/email/domain/usecases/download_attachments_interactor.dart'; import 'package:tmail_ui_user/features/email/domain/usecases/export_attachment_interactor.dart'; import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart'; +import 'package:tmail_ui_user/features/email/domain/usecases/get_stored_email_state_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/move_to_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart'; @@ -139,6 +140,7 @@ class EmailBindings extends BaseBindings { Get.find(), Get.find(), )); + Get.lazyPut(() => GetStoredEmailStateInteractor(Get.find())); IdentityInteractorsBindings().dependencies(); }