From 6f9e20188fac0a69e58fa95a77197f76c8339e9d Mon Sep 17 00:00:00 2001 From: DatDang Date: Thu, 7 Mar 2024 08:53:21 +0700 Subject: [PATCH] TF-2680 Integrate get always read receipt with send email interactor --- .../usecases/send_email_interactor.dart | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/features/composer/domain/usecases/send_email_interactor.dart b/lib/features/composer/domain/usecases/send_email_interactor.dart index 092ee78c0..98db9b5c6 100644 --- a/lib/features/composer/domain/usecases/send_email_interactor.dart +++ b/lib/features/composer/domain/usecases/send_email_interactor.dart @@ -3,18 +3,24 @@ 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); + SendEmailInteractor( + this._emailRepository, + this._mailboxRepository, + this._serverSettingsRepository); Stream> execute( Session session, @@ -36,10 +42,14 @@ class SendEmailInteractor { final currentMailboxState = listState.first; final currentEmailState = listState.last; + EmailRequest? updatedEmailRequest = await _getUpdatedEmailRequestIfAvailable( + accountId, + emailRequest); + final result = await _emailRepository.sendEmail( session, accountId, - emailRequest, + updatedEmailRequest ?? emailRequest, mailboxRequest: mailboxRequest ); @@ -75,4 +85,22 @@ 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