TF-3023 Show Good/Bad SMime signature icon in email view

This commit is contained in:
dab246
2024-08-05 16:50:51 +07:00
committed by Dat H. Pham
parent 8e0dee9341
commit 123229fce1
7 changed files with 81 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M7.99996 1.14285C11.7871 1.14285 14.8571 4.2129 14.8571 8C14.8571 11.7871 11.7871 14.8571 7.99996 14.8571C4.21287 14.8571 1.14282 11.7871 1.14282 8C1.14282 4.2129 4.21287 1.14285 7.99996 1.14285ZM7.99996 2.28571C4.84405 2.28571 2.28568 4.84408 2.28568 8C2.28568 11.1559 4.84405 13.7143 7.99996 13.7143C11.1559 13.7143 13.7143 11.1559 13.7143 8C13.7143 4.84408 11.1559 2.28571 7.99996 2.28571ZM7.99996 10.0571C8.44179 10.0571 8.79996 10.4153 8.79996 10.8571C8.79996 11.299 8.44179 11.6571 7.99996 11.6571C7.55814 11.6571 7.19997 11.299 7.19997 10.8571C7.19997 10.4153 7.55814 10.0571 7.99996 10.0571ZM8.04203 4.57142C8.1778 4.57142 8.26303 4.59264 8.33753 4.63248C8.41203 4.67232 8.47049 4.73079 8.51033 4.80529C8.55018 4.87979 8.57139 4.96501 8.57139 5.10078V8.61349C8.57139 8.74926 8.55018 8.83449 8.51033 8.90899C8.47049 8.98349 8.41203 9.04195 8.33753 9.08179C8.26303 9.12163 8.1778 9.14285 8.04203 9.14285H7.9579C7.82212 9.14285 7.7369 9.12163 7.6624 9.08179C7.5879 9.04195 7.52944 8.98349 7.4896 8.90899C7.44975 8.83449 7.42854 8.74926 7.42854 8.61349V5.10078C7.42854 4.96501 7.44975 4.87979 7.4896 4.80529C7.52944 4.73079 7.5879 4.67232 7.6624 4.63248C7.7369 4.59264 7.82212 4.57142 7.9579 4.57142H8.04203Z"
fill="#FF3347" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+5
View File
@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 1.14285C11.7871 1.14285 14.8571 4.2129 14.8571 8C14.8571 11.7871 11.7871 14.8571 8 14.8571C4.2129 14.8571 1.14286 11.7871 1.14286 8C1.14286 4.2129 4.2129 1.14285 8 1.14285ZM8 2.28571C4.84409 2.28571 2.28571 4.84408 2.28571 8C2.28571 11.1559 4.84409 13.7143 8 13.7143C11.1559 13.7143 13.7143 11.1559 13.7143 8C13.7143 4.84408 11.1559 2.28571 8 2.28571ZM10.4514 5.88C10.6746 5.65684 11.0397 5.65684 11.2629 5.88C11.486 6.10315 11.486 6.46827 11.2629 6.69142L7.2612 10.6898C7.03805 10.9129 6.67624 10.9129 6.45308 10.6898L4.45308 8.68977C4.22993 8.46661 4.22993 8.1048 4.45308 7.88165C4.67624 7.65849 5.03805 7.65849 5.2612 7.88165L6.85714 9.47759L10.4514 5.88Z"
fill="#00BFA5" />
</svg>

After

Width:  |  Height:  |  Size: 813 B

@@ -216,6 +216,8 @@ class ImagePaths {
String get icRemoveRule => _getImagePath('ic_remove_rule.svg'); String get icRemoveRule => _getImagePath('ic_remove_rule.svg');
String get icCheckboxUnselected => _getImagePath('ic_checkbox_unselected.svg'); String get icCheckboxUnselected => _getImagePath('ic_checkbox_unselected.svg');
String get icCheckboxSelected => _getImagePath('ic_checkbox_selected.svg'); String get icCheckboxSelected => _getImagePath('ic_checkbox_selected.svg');
String get icGoodSignature => _getImagePath('ic_good_signature.svg');
String get icBadSignature => _getImagePath('ic_bad_signature.svg');
String _getImagePath(String imageName) { String _getImagePath(String imageName) {
return AssetsPaths.images + imageName; return AssetsPaths.images + imageName;
@@ -1,5 +1,32 @@
import 'package:core/presentation/resources/image_paths.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
enum SMimeSignatureStatus { enum SMimeSignatureStatus {
goodSignature, goodSignature,
badSignature, badSignature,
notSigned notSigned;
String getIcon(ImagePaths imagePaths) {
switch(this) {
case SMimeSignatureStatus.goodSignature:
return imagePaths.icGoodSignature;
case SMimeSignatureStatus.badSignature:
return imagePaths.icBadSignature;
case SMimeSignatureStatus.notSigned:
return '';
}
}
String getTooltipMessage(BuildContext context) {
switch(this) {
case SMimeSignatureStatus.goodSignature:
return AppLocalizations.of(context).sMimeGoodSignatureMessage;
case SMimeSignatureStatus.badSignature:
return AppLocalizations.of(context).sMimeBadSignatureMessage;
case SMimeSignatureStatus.notSigned:
return '';
}
}
} }
@@ -3,11 +3,14 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:model/email/email_action_type.dart'; import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.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/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/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'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_receiver_widget.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_sender_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_sender_builder.dart';
import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_app_bar_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_view_app_bar_widget.dart';
@@ -61,6 +64,17 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
openEmailAddressDetailAction: openEmailAddressDetailAction, openEmailAddressDetailAction: openEmailAddressDetailAction,
) )
)), )),
if (emailSelected.sMimeStatus != SMimeSignatureStatus.notSigned)
Tooltip(
message: emailSelected.sMimeStatus.getTooltipMessage(context),
child: MouseRegion(
cursor: SystemMouseCursors.click,
child: SvgPicture.asset(
emailSelected.sMimeStatus.getIcon(imagePaths),
fit: BoxFit.fill,
),
),
),
if (!emailSelected.isSubscribed && emailUnsubscribe != null && !responsiveUtils.isPortraitMobile(context)) if (!emailSelected.isSubscribed && emailUnsubscribe != null && !responsiveUtils.isPortraitMobile(context))
TMailButtonWidget.fromText( TMailButtonWidget.fromText(
text: AppLocalizations.of(context).unsubscribe, text: AppLocalizations.of(context).unsubscribe,
+13 -1
View File
@@ -1,5 +1,5 @@
{ {
"@@last_modified": "2024-07-17T01:36:03.095458", "@@last_modified": "2024-08-05T16:49:32.139855",
"initializing_data": "Initializing data...", "initializing_data": "Initializing data...",
"@initializing_data": { "@initializing_data": {
"type": "text", "type": "text",
@@ -3963,5 +3963,17 @@
"type": "text", "type": "text",
"placeholders_order": [], "placeholders_order": [],
"placeholders": {} "placeholders": {}
},
"sMimeGoodSignatureMessage": "The authenticity of this message had been verified with SMime signature.",
"@sMimeGoodSignatureMessage": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"sMimeBadSignatureMessage": "This message failed SMime signature verification.",
"@sMimeBadSignatureMessage": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
} }
} }
@@ -4148,4 +4148,18 @@ class AppLocalizations {
name: 'dialogMessageSessionHasExpired', name: 'dialogMessageSessionHasExpired',
); );
} }
String get sMimeGoodSignatureMessage {
return Intl.message(
'The authenticity of this message had been verified with SMime signature.',
name: 'sMimeGoodSignatureMessage',
);
}
String get sMimeBadSignatureMessage {
return Intl.message(
'This message failed SMime signature verification.',
name: 'sMimeBadSignatureMessage',
);
}
} }