TF-3585 Fix request Read Receipt popup is not shown on mobile
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -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/core/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||||
import 'package:model/model.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/repository/email_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
|
import 'package:tmail_ui_user/features/email/domain/state/get_email_content_state.dart';
|
||||||
|
|
||||||
@@ -109,16 +110,19 @@ class GetEmailContentInteractor {
|
|||||||
{Properties? additionalProperties}
|
{Properties? additionalProperties}
|
||||||
) async* {
|
) async* {
|
||||||
try {
|
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}');
|
log('GetEmailContentInteractor::_getStoredOpenedEmail: attachments = ${detailedEmail.attachments?.length} | inlineImages = ${detailedEmail.inlineImages?.length}');
|
||||||
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
||||||
htmlEmailContent: detailedEmail.htmlEmailContent ?? '',
|
htmlEmailContent: detailedEmail.htmlEmailContent ?? '',
|
||||||
attachments: detailedEmail.attachments ?? [],
|
attachments: detailedEmail.attachments ?? [],
|
||||||
inlineImages: detailedEmail.inlineImages ?? [],
|
inlineImages: detailedEmail.inlineImages ?? [],
|
||||||
emailCurrent: Email(
|
emailCurrent: emailCache.copyWith(
|
||||||
id: emailId,
|
|
||||||
headers: detailedEmail.headers,
|
headers: detailedEmail.headers,
|
||||||
keywords: detailedEmail.keywords,
|
|
||||||
sMimeStatusHeader: detailedEmail.sMimeStatusHeader,
|
sMimeStatusHeader: detailedEmail.sMimeStatusHeader,
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
@@ -144,16 +148,19 @@ class GetEmailContentInteractor {
|
|||||||
{Properties? additionalProperties}
|
{Properties? additionalProperties}
|
||||||
) async* {
|
) async* {
|
||||||
try {
|
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}');
|
log('GetEmailContentInteractor::_getStoredNewEmail: attachments = ${detailedEmail.attachments?.length} | inlineImages = ${detailedEmail.inlineImages?.length}');
|
||||||
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
||||||
htmlEmailContent: detailedEmail.htmlEmailContent ?? '',
|
htmlEmailContent: detailedEmail.htmlEmailContent ?? '',
|
||||||
attachments: detailedEmail.attachments ?? [],
|
attachments: detailedEmail.attachments ?? [],
|
||||||
inlineImages: detailedEmail.inlineImages ?? [],
|
inlineImages: detailedEmail.inlineImages ?? [],
|
||||||
emailCurrent: Email(
|
emailCurrent: emailCache.copyWith(
|
||||||
id: emailId,
|
|
||||||
headers: detailedEmail.headers,
|
headers: detailedEmail.headers,
|
||||||
keywords: detailedEmail.keywords,
|
|
||||||
sMimeStatusHeader: detailedEmail.sMimeStatusHeader,
|
sMimeStatusHeader: detailedEmail.sMimeStatusHeader,
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -735,6 +735,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
AppLocalizations.of(currentContext!).yes,
|
AppLocalizations.of(currentContext!).yes,
|
||||||
onConfirmAction: () => _handleSendReceiptToSenderAction(currentContext!),
|
onConfirmAction: () => _handleSendReceiptToSenderAction(currentContext!),
|
||||||
showAsBottomSheet: true,
|
showAsBottomSheet: true,
|
||||||
|
dialogMargin: MediaQuery.paddingOf(currentContext!).add(const EdgeInsets.only(bottom: 12)),
|
||||||
title: AppLocalizations.of(currentContext!).titleReadReceiptRequestNotificationMessage,
|
title: AppLocalizations.of(currentContext!).titleReadReceiptRequestNotificationMessage,
|
||||||
cancelTitle: AppLocalizations.of(currentContext!).no,
|
cancelTitle: AppLocalizations.of(currentContext!).no,
|
||||||
icon: SvgPicture.asset(imagePaths.icReadReceiptMessage, fit: BoxFit.fill),
|
icon: SvgPicture.asset(imagePaths.icReadReceiptMessage, fit: BoxFit.fill),
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ extension EmailExtension on Email {
|
|||||||
final mailboxCurrent = findMailboxContain(mapMailbox);
|
final mailboxCurrent = findMailboxContain(mapMailbox);
|
||||||
return !hasMdnSent &&
|
return !hasMdnSent &&
|
||||||
headers.readReceiptHasBeenRequested &&
|
headers.readReceiptHasBeenRequested &&
|
||||||
mailboxCurrent?.isSent == false;
|
mailboxCurrent?.isSent != true;
|
||||||
}
|
}
|
||||||
|
|
||||||
String getReceivedAt({required String newLocale, String? pattern}) {
|
String getReceivedAt({required String newLocale, String? pattern}) {
|
||||||
|
|||||||
Reference in New Issue
Block a user