Fix SMime signature status not displayed

This commit is contained in:
dab246
2024-08-27 15:11:48 +07:00
committed by Dat H. Pham
parent 5375f20e23
commit 0c4076cab6
30 changed files with 64 additions and 43 deletions
@@ -580,6 +580,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
htmlEmailContent: success.htmlEmailContent,
messageId: success.emailCurrent?.messageId,
references: success.emailCurrent?.references,
sMimeStatusHeader: success.emailCurrent?.sMimeStatusHeader,
);
_storeOpenedEmailAction(
@@ -317,6 +317,7 @@ class EmailView extends GetWidget<SingleEmailController> {
emailSelected: presentationEmail,
imagePaths: controller.imagePaths,
responsiveUtils: controller.responsiveUtils,
sMimeStatus: controller.currentEmailLoaded.value?.sMimeStatus,
emailUnsubscribe: controller.emailUnsubscribe.value,
maxBodyHeight: maxBodyHeight,
openEmailAddressDetailAction: controller.openEmailAddressDialog,
@@ -1,13 +1,18 @@
import 'package:model/email/presentation_email.dart';
import 'package:core/utils/app_logger.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/extensions/email_extension.dart';
import 'package:model/extensions/list_email_header_extension.dart';
import 'package:tmail_ui_user/features/email/presentation/model/smime_signature_status.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/smime_signature_constant.dart';
extension PresentationEmailExtension on PresentationEmail {
extension EmailExtension on Email {
SMimeSignatureStatus get sMimeStatus {
final status = emailHeader?.toSet().sMimeStatus;
final status = sMimeStatusHeaderParsed.isNotEmpty
? sMimeStatusHeaderParsed
: headers?.toSet().sMimeStatus;
log('EmailExtension::sMimeStatus: $status');
if (status == SMimeSignatureConstant.GOOD_SIGNATURE) {
return SMimeSignatureStatus.goodSignature;
} else if (status == SMimeSignatureConstant.BAD_SIGNATURE) {
@@ -1,6 +1,8 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/email/attachment.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/email_extension.dart';
import 'package:tmail_ui_user/features/email/presentation/model/smime_signature_status.dart';
class EmailLoaded with EquatableMixin {
final String htmlContent;
@@ -15,6 +17,8 @@ class EmailLoaded with EquatableMixin {
this.emailCurrent,
});
SMimeSignatureStatus? get sMimeStatus => emailCurrent?.sMimeStatus;
@override
List<Object?> get props => [
htmlContent,
@@ -8,7 +8,6 @@ import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/base/widget/email_avatar_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/email/presentation/model/email_unsubscribe.dart';
import 'package:tmail_ui_user/features/email/presentation/model/smime_signature_status.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_receiver_widget.dart';
@@ -26,12 +25,14 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
final OnOpenEmailAddressDetailAction? openEmailAddressDetailAction;
final OnEmailActionClick? onEmailActionClick;
final double? maxBodyHeight;
final SMimeSignatureStatus? sMimeStatus;
const InformationSenderAndReceiverBuilder({
Key? key,
required this.emailSelected,
required this.responsiveUtils,
required this.imagePaths,
this.sMimeStatus,
this.emailUnsubscribe,
this.maxBodyHeight,
this.openEmailAddressDetailAction,
@@ -64,14 +65,14 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
openEmailAddressDetailAction: openEmailAddressDetailAction,
)
)),
if (emailSelected.sMimeStatus != SMimeSignatureStatus.notSigned)
if (sMimeStatus != null && sMimeStatus != SMimeSignatureStatus.notSigned)
Tooltip(
key: const Key('smime_signature_status_icon'),
message: emailSelected.sMimeStatus.getTooltipMessage(context),
message: sMimeStatus!.getTooltipMessage(context),
child: MouseRegion(
cursor: SystemMouseCursors.click,
child: SvgPicture.asset(
emailSelected.sMimeStatus.getIcon(imagePaths),
sMimeStatus!.getIcon(imagePaths),
fit: BoxFit.fill,
),
),