TF-3585 Fix request Read Receipt popup is not shown on mobile

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-03-24 13:19:54 +07:00
committed by Dat H. Pham
parent 32e05adf4c
commit 80431b4ea0
3 changed files with 17 additions and 9 deletions
@@ -10,6 +10,7 @@ import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
@@ -109,16 +110,19 @@ class GetEmailContentInteractor {
{Properties? additionalProperties}
) async* {
try {
final detailedEmail = await emailRepository.getStoredOpenedEmail(session, accountId, emailId);
final tupleEmail = await Future.wait([
emailRepository.getStoredEmail(session, accountId, emailId),
emailRepository.getStoredOpenedEmail(session, accountId, emailId),
], eagerError: true);
final emailCache = tupleEmail[0] as Email;
final detailedEmail = tupleEmail[1] as DetailedEmail;
log('GetEmailContentInteractor::_getStoredOpenedEmail: attachments = ${detailedEmail.attachments?.length} | inlineImages = ${detailedEmail.inlineImages?.length}');
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
htmlEmailContent: detailedEmail.htmlEmailContent ?? '',
attachments: detailedEmail.attachments ?? [],
inlineImages: detailedEmail.inlineImages ?? [],
emailCurrent: Email(
id: emailId,
emailCurrent: emailCache.copyWith(
headers: detailedEmail.headers,
keywords: detailedEmail.keywords,
sMimeStatusHeader: detailedEmail.sMimeStatusHeader,
)
));
@@ -144,16 +148,19 @@ class GetEmailContentInteractor {
{Properties? additionalProperties}
) async* {
try {
final detailedEmail = await emailRepository.getStoredNewEmail(session, accountId, emailId);
final tupleEmail = await Future.wait([
emailRepository.getStoredEmail(session, accountId, emailId),
emailRepository.getStoredNewEmail(session, accountId, emailId),
], eagerError: true);
final emailCache = tupleEmail[0] as Email;
final detailedEmail = tupleEmail[1] as DetailedEmail;
log('GetEmailContentInteractor::_getStoredNewEmail: attachments = ${detailedEmail.attachments?.length} | inlineImages = ${detailedEmail.inlineImages?.length}');
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
htmlEmailContent: detailedEmail.htmlEmailContent ?? '',
attachments: detailedEmail.attachments ?? [],
inlineImages: detailedEmail.inlineImages ?? [],
emailCurrent: Email(
id: emailId,
emailCurrent: emailCache.copyWith(
headers: detailedEmail.headers,
keywords: detailedEmail.keywords,
sMimeStatusHeader: detailedEmail.sMimeStatusHeader,
)
));
@@ -735,6 +735,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
AppLocalizations.of(currentContext!).yes,
onConfirmAction: () => _handleSendReceiptToSenderAction(currentContext!),
showAsBottomSheet: true,
dialogMargin: MediaQuery.paddingOf(currentContext!).add(const EdgeInsets.only(bottom: 12)),
title: AppLocalizations.of(currentContext!).titleReadReceiptRequestNotificationMessage,
cancelTitle: AppLocalizations.of(currentContext!).no,
icon: SvgPicture.asset(imagePaths.icReadReceiptMessage, fit: BoxFit.fill),
+1 -1
View File
@@ -54,7 +54,7 @@ extension EmailExtension on Email {
final mailboxCurrent = findMailboxContain(mapMailbox);
return !hasMdnSent &&
headers.readReceiptHasBeenRequested &&
mailboxCurrent?.isSent == false;
mailboxCurrent?.isSent != true;
}
String getReceivedAt({required String newLocale, String? pattern}) {