From ae3f746475570b6f103436fe50ae2291bb9a8bad Mon Sep 17 00:00:00 2001 From: Dat Dang Date: Wed, 13 Mar 2024 14:50:34 +0700 Subject: [PATCH] TF-2683 Integrate update always read receipt setting in composer (#2700) --- .../usecases/send_email_interactor.dart | 30 ++----------------- .../presentation/composer_bindings.dart | 22 +++++++------- .../presentation/composer_controller.dart | 2 +- .../bindings/mailbox_dashboard_bindings.dart | 1 - .../always_read_receipt_controller.dart | 2 +- .../sending_email_interactor_bindings.dart | 3 +- ...ate_always_read_receipt_setting_state.dart | 6 ++-- ...lways_read_receipt_setting_interactor.dart | 2 +- ..._read_receipt_setting_interactor_test.dart | 2 +- 9 files changed, 21 insertions(+), 49 deletions(-) diff --git a/lib/features/composer/domain/usecases/send_email_interactor.dart b/lib/features/composer/domain/usecases/send_email_interactor.dart index 98db9b5c6..218d9b71a 100644 --- a/lib/features/composer/domain/usecases/send_email_interactor.dart +++ b/lib/features/composer/domain/usecases/send_email_interactor.dart @@ -3,24 +3,20 @@ import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; -import 'package:tmail_ui_user/features/composer/domain/extensions/email_request_extension.dart'; import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart'; import 'package:tmail_ui_user/features/composer/domain/state/send_email_state.dart'; import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_email_action_type.dart'; -import 'package:tmail_ui_user/features/server_settings/domain/repository/server_settings_repository.dart'; class SendEmailInteractor { final EmailRepository _emailRepository; final MailboxRepository _mailboxRepository; - final ServerSettingsRepository _serverSettingsRepository; SendEmailInteractor( this._emailRepository, - this._mailboxRepository, - this._serverSettingsRepository); + this._mailboxRepository); Stream> execute( Session session, @@ -42,14 +38,10 @@ class SendEmailInteractor { final currentMailboxState = listState.first; final currentEmailState = listState.last; - EmailRequest? updatedEmailRequest = await _getUpdatedEmailRequestIfAvailable( - accountId, - emailRequest); - final result = await _emailRepository.sendEmail( session, accountId, - updatedEmailRequest ?? emailRequest, + emailRequest, mailboxRequest: mailboxRequest ); @@ -85,22 +77,4 @@ class SendEmailInteractor { )); } } - - Future _getUpdatedEmailRequestIfAvailable( - AccountId accountId, - EmailRequest emailRequest - ) async { - bool alwaysReadReceipt = true; - EmailRequest? updatedEmailRequest; - try { - final serverSettings = await _serverSettingsRepository.getServerSettings(accountId); - alwaysReadReceipt = serverSettings.settings?.alwaysReadReceipts ?? true; - } catch (_) { - alwaysReadReceipt = true; - } - if (!alwaysReadReceipt) { - updatedEmailRequest = emailRequest.withUpdatedEmailHeaderMdn({}); - } - return updatedEmailRequest; - } } \ No newline at end of file diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index 51872b696..dda6062d2 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -205,17 +205,17 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => UploadController(Get.find())); Get.lazyPut(() => RichTextWebController()); Get.lazyPut(() => ComposerController( - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), - Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), )); } diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 6dbfd0e9c..6214ed244 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -735,7 +735,7 @@ class ComposerController extends BaseController { }, headerUserAgent: {IndividualHeaderIdentifier.headerUserAgent : userAgent}, attachments: attachments.isNotEmpty ? attachments : null, - headerMdn: {IndividualHeaderIdentifier.headerMdn: getEmailAddressSender()}, + headerMdn: hasRequestReadReceipt.value ? { IndividualHeaderIdentifier.headerMdn: getEmailAddressSender() } : {}, ); } diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index 82e23abac..c2004adb9 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -325,7 +325,6 @@ class MailboxDashBoardBindings extends BaseBindings { Get.lazyPut(() => SendEmailInteractor( Get.find(), Get.find(), - Get.find() )); SendingQueueInteractorBindings().dependencies(); Get.lazyPut(() => StoreSessionInteractor(Get.find())); diff --git a/lib/features/manage_account/presentation/always_read_receipt/always_read_receipt_controller.dart b/lib/features/manage_account/presentation/always_read_receipt/always_read_receipt_controller.dart index 0e405f28d..4f11a3c4f 100644 --- a/lib/features/manage_account/presentation/always_read_receipt/always_read_receipt_controller.dart +++ b/lib/features/manage_account/presentation/always_read_receipt/always_read_receipt_controller.dart @@ -67,7 +67,7 @@ class AlwaysReadReceiptController extends BaseController { void _updateAlwaysReadReceiptSettingSuccess( UpdateAlwaysReadReceiptSettingSuccess success ) { - _updateAlwaysReadReceiptValue(success.isEnabled); + _updateAlwaysReadReceiptValue(success.alwaysReadReceiptIsEnabled); } void toggleAlwaysReadReceipt() { diff --git a/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart b/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart index fe6cb23fd..807536be9 100644 --- a/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart +++ b/lib/features/offline_mode/bindings/sending_email_interactor_bindings.dart @@ -97,8 +97,7 @@ class SendEmailInteractorBindings extends InteractorsBindings { void bindingsInteractor() { Get.lazyPut(() => SendEmailInteractor( Get.find(), - Get.find(), - Get.find())); + Get.find())); } @override diff --git a/lib/features/server_settings/domain/state/update_always_read_receipt_setting_state.dart b/lib/features/server_settings/domain/state/update_always_read_receipt_setting_state.dart index cbed4e0be..3227dcef2 100644 --- a/lib/features/server_settings/domain/state/update_always_read_receipt_setting_state.dart +++ b/lib/features/server_settings/domain/state/update_always_read_receipt_setting_state.dart @@ -3,12 +3,12 @@ import 'package:core/core.dart'; class UpdatingAlwaysReadReceiptSetting extends LoadingState {} class UpdateAlwaysReadReceiptSettingSuccess extends UIState { - final bool isEnabled; + final bool alwaysReadReceiptIsEnabled; - UpdateAlwaysReadReceiptSettingSuccess({required this.isEnabled}); + UpdateAlwaysReadReceiptSettingSuccess({required this.alwaysReadReceiptIsEnabled}); @override - List get props => [isEnabled]; + List get props => [alwaysReadReceiptIsEnabled]; } class UpdateAlwaysReadReceiptSettingFailure extends FeatureFailure { diff --git a/lib/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor.dart b/lib/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor.dart index 28711cdff..62fed0b19 100644 --- a/lib/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor.dart +++ b/lib/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor.dart @@ -23,7 +23,7 @@ class UpdateAlwaysReadReceiptSettingInteractor { ) ); yield Right(UpdateAlwaysReadReceiptSettingSuccess( - isEnabled: result.settings?.alwaysReadReceipts ?? true)); + alwaysReadReceiptIsEnabled: result.settings?.alwaysReadReceipts ?? true)); } catch (e) { yield Left(UpdateAlwaysReadReceiptSettingFailure(e)); } diff --git a/test/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor_test.dart b/test/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor_test.dart index f8b49e419..571175392 100644 --- a/test/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor_test.dart +++ b/test/features/server_settings/domain/usecases/update_always_read_receipt_setting_interactor_test.dart @@ -31,7 +31,7 @@ void main() { .execute(accountId, alwaysReadReceipts), emitsInOrder([ Right(UpdatingAlwaysReadReceiptSetting()), - Right(UpdateAlwaysReadReceiptSettingSuccess(isEnabled: alwaysReadReceipts)), + Right(UpdateAlwaysReadReceiptSettingSuccess(alwaysReadReceiptIsEnabled: alwaysReadReceipts)), ]) ); });