From 6f3af9100d6764c95140a7fb5093577826085c91 Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Tue, 6 Jun 2023 01:29:06 +0700 Subject: [PATCH] TF-1865: Update sending email has been edited (cherry picked from commit 1099d39a31ef0fa590f082a7c146734c819b1707) --- lib/features/caching/config/hive_cache_client.dart | 5 ++++- .../data/repository/email_repository_impl.dart | 13 +++++++++++-- .../email/domain/repository/email_repository.dart | 2 +- .../domain/state/store_sending_email_state.dart | 3 ++- .../usecases/store_sending_email_interactor.dart | 11 ++++++++--- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/lib/features/caching/config/hive_cache_client.dart b/lib/features/caching/config/hive_cache_client.dart index 1311c7274..d39be2f06 100644 --- a/lib/features/caching/config/hive_cache_client.dart +++ b/lib/features/caching/config/hive_cache_client.dart @@ -106,8 +106,11 @@ abstract class HiveCacheClient { return tupleKey.parts.length >= 3 && tupleKey.parts[1] == accountId && tupleKey.parts[2] == userName; } - Future updateItem(String key, T newObject) { + Future updateItem(String key, T newObject, {bool needToReopen = false}) { return Future.sync(() async { + if (needToReopen) { + await closeBox(); + } final boxItem = encryption ? await openBoxEncryption() : await openBox(); diff --git a/lib/features/email/data/repository/email_repository_impl.dart b/lib/features/email/data/repository/email_repository_impl.dart index 9301b08d6..caff32e44 100644 --- a/lib/features/email/data/repository/email_repository_impl.dart +++ b/lib/features/email/data/repository/email_repository_impl.dart @@ -223,8 +223,17 @@ class EmailRepositoryImpl extends EmailRepository { } @override - Future storeSendingEmail(AccountId accountId, UserName userName, SendingEmail sendingEmail) { - return emailDataSource[DataSourceType.hiveCache]!.storeSendingEmail(accountId, userName, sendingEmail); + Future storeSendingEmail( + AccountId accountId, + UserName userName, + SendingEmail sendingEmail, + bool isUpdateSendingEmail + ) async { + if (isUpdateSendingEmail) { + return await emailDataSource[DataSourceType.hiveCache]!.updateSendingEmail(accountId, userName, sendingEmail); + } else { + return await emailDataSource[DataSourceType.hiveCache]!.storeSendingEmail(accountId, userName, sendingEmail); + } } @override diff --git a/lib/features/email/domain/repository/email_repository.dart b/lib/features/email/domain/repository/email_repository.dart index 49cbc4d50..c4fd8fab9 100644 --- a/lib/features/email/domain/repository/email_repository.dart +++ b/lib/features/email/domain/repository/email_repository.dart @@ -102,7 +102,7 @@ abstract class EmailRepository { Future getOpenedEmail(Session session, AccountId accountId, EmailId emailId); - Future storeSendingEmail(AccountId accountId, UserName userName, SendingEmail sendingEmail); + Future storeSendingEmail(AccountId accountId, UserName userName, SendingEmail sendingEmail, bool isUpdateSendingEmail); Future deleteSendingEmail(AccountId accountId, UserName userName, String sendingId); } \ No newline at end of file diff --git a/lib/features/email/domain/state/store_sending_email_state.dart b/lib/features/email/domain/state/store_sending_email_state.dart index 9a3599907..88647da59 100644 --- a/lib/features/email/domain/state/store_sending_email_state.dart +++ b/lib/features/email/domain/state/store_sending_email_state.dart @@ -8,8 +8,9 @@ class StoreSendingEmailLoading extends UIState {} class StoreSendingEmailSuccess extends UIState { final SendingEmail sendingEmail; + final bool isUpdateSendingEmail; - StoreSendingEmailSuccess(this.sendingEmail); + StoreSendingEmailSuccess(this.sendingEmail, this.isUpdateSendingEmail); @override List get props => [sendingEmail]; diff --git a/lib/features/email/domain/usecases/store_sending_email_interactor.dart b/lib/features/email/domain/usecases/store_sending_email_interactor.dart index 67bc46962..4e293d10f 100644 --- a/lib/features/email/domain/usecases/store_sending_email_interactor.dart +++ b/lib/features/email/domain/usecases/store_sending_email_interactor.dart @@ -12,11 +12,16 @@ class StoreSendingEmailInteractor { StoreSendingEmailInteractor(this._emailRepository); - Stream> execute(AccountId accountId, UserName userName, SendingEmail sendingEmail) async* { + Stream> execute( + AccountId accountId, + UserName userName, + SendingEmail sendingEmail, + bool isUpdateSendingEmail + ) async* { try { yield Right(StoreSendingEmailLoading()); - await _emailRepository.storeSendingEmail(accountId, userName, sendingEmail); - yield Right(StoreSendingEmailSuccess(sendingEmail)); + await _emailRepository.storeSendingEmail(accountId, userName, sendingEmail, isUpdateSendingEmail); + yield Right(StoreSendingEmailSuccess(sendingEmail, isUpdateSendingEmail)); } catch (e) { yield Left(StoreSendingEmailFailure(e)); }