From 800488563bfb55c5f8ba2578009b7358304e96d3 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 21 Apr 2023 19:25:08 +0700 Subject: [PATCH] TF-1779 Fix logic of replacing dot in long email (cherry picked from commit 24d306500325fc3f7b7901cf1936e46f8be6ccf3) --- .../presentation/extensions/string_extension.dart | 8 ++++++++ .../composer/presentation/composer_view.dart | 3 ++- .../widgets/mailbox_folder_tile_builder.dart | 5 +++-- .../widgets/user_information_widget_builder.dart | 3 ++- .../widgets/identity_list_tile_builder.dart | 8 +++++--- .../widgets/mailbox_searched_item_builder.dart | 7 ++++--- .../presentation/mixin/base_email_item_tile.dart | 15 ++++++++------- 7 files changed, 32 insertions(+), 17 deletions(-) diff --git a/core/lib/presentation/extensions/string_extension.dart b/core/lib/presentation/extensions/string_extension.dart index cd4cd1502..1609b3906 100644 --- a/core/lib/presentation/extensions/string_extension.dart +++ b/core/lib/presentation/extensions/string_extension.dart @@ -1,4 +1,5 @@ import 'package:core/utils/app_logger.dart'; +import 'package:flutter/material.dart'; extension StringExtension on String { @@ -38,4 +39,11 @@ extension StringExtension on String { return ''; } } + + String get withUnicodeCharacter { + return characters + .replaceAll(Characters(' '), Characters('\u{00A0}')) + .replaceAll(Characters('-'), Characters('\u{2011}')) + .toString(); + } } \ No newline at end of file diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index 7ebe7cf15..bc2e64f5d 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -1,6 +1,7 @@ import 'package:core/presentation/extensions/capitalize_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/html_extension.dart'; +import 'package:core/presentation/extensions/string_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; @@ -352,7 +353,7 @@ class ComposerView extends GetWidget left: AppUtils.isDirectionRTL(context) ? 8 : 12 ), child: Text( - controller.identitySelected.value?.email ?? '', + (controller.identitySelected.value?.email ?? '').withUnicodeCharacter, maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle(fontSize: 17, fontWeight: FontWeight.normal, color: AppColor.colorEmailAddressPrefix), diff --git a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart index 64e01dae0..8376e1dad 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart @@ -1,4 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/extensions/string_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; @@ -299,7 +300,7 @@ class MailBoxFolderTileBuilder { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - _mailboxNode.item.name?.name ?? '', + (_mailboxNode.item.name?.name ?? '').withUnicodeCharacter, maxLines: 1, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow, @@ -310,7 +311,7 @@ class MailBoxFolderTileBuilder { ), if(_mailboxNode.item.isTeamMailboxes) Text( - _mailboxNode.item.emailTeamMailBoxes ?? '', + (_mailboxNode.item.emailTeamMailBoxes ?? '').withUnicodeCharacter, maxLines: 1, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow, diff --git a/lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart b/lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart index 88cde1997..a731fec32 100644 --- a/lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart +++ b/lib/features/mailbox/presentation/widgets/user_information_widget_builder.dart @@ -1,5 +1,6 @@ import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/extensions/string_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/image/avatar_builder.dart'; @@ -59,7 +60,7 @@ class UserInformationWidgetBuilder extends StatelessWidget { top: 10 ), child: Text( - _userProfile != null ? '${_userProfile?.email}' : '', + _userProfile != null ? '${_userProfile?.email}'.withUnicodeCharacter : '', maxLines: 1, overflow: CommonTextStyle.defaultTextOverFlow, softWrap: CommonTextStyle.defaultSoftWrap, diff --git a/lib/features/manage_account/presentation/profiles/identities/widgets/identity_list_tile_builder.dart b/lib/features/manage_account/presentation/profiles/identities/widgets/identity_list_tile_builder.dart index 94412fea8..7d0e67a15 100644 --- a/lib/features/manage_account/presentation/profiles/identities/widgets/identity_list_tile_builder.dart +++ b/lib/features/manage_account/presentation/profiles/identities/widgets/identity_list_tile_builder.dart @@ -1,4 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/extensions/string_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; @@ -65,7 +66,7 @@ class IdentityListTileBuilder extends StatelessWidget { Padding( padding: const EdgeInsets.only(bottom: 6), child: Text( - identity.name ?? '', + (identity.name ?? '').withUnicodeCharacter, overflow: CommonTextStyle.defaultTextOverFlow, softWrap: CommonTextStyle.defaultSoftWrap, style: const TextStyle( @@ -122,7 +123,7 @@ class IdentityListTileBuilder extends StatelessWidget { child: SvgPicture.asset(imagePath, width: 15, height: 15))), const SizedBox(width: 4), Expanded(child: Text( - text ?? '', + (text ?? '').withUnicodeCharacter, style: const TextStyle( color: AppColor.colorEmailAddressFull, fontWeight: FontWeight.normal, @@ -150,7 +151,8 @@ class IdentityListTileBuilder extends StatelessWidget { decoration: TextDecoration.underline, color: AppColor.colorTextButton))), const SizedBox(width: 4), - Expanded(child: Text(text ?? '', + Expanded(child: Text( + (text ?? '').withUnicodeCharacter, style: const TextStyle( color: AppColor.colorEmailAddressFull, fontWeight: FontWeight.normal, diff --git a/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart b/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart index 5e5b26b21..8024650c6 100644 --- a/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart +++ b/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart @@ -1,4 +1,5 @@ import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/extensions/string_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; @@ -204,7 +205,7 @@ class _MailboxSearchedItemBuilderState extends State Widget _buildTitleItem() { return Text( - widget._presentationMailbox.name?.name ?? '', + (widget._presentationMailbox.name?.name ?? '').withUnicodeCharacter, maxLines: 1, overflow: CommonTextStyle.defaultTextOverFlow, softWrap: CommonTextStyle.defaultSoftWrap, @@ -218,7 +219,7 @@ class _MailboxSearchedItemBuilderState extends State Widget _buildSubtitleItem() { if (widget._presentationMailbox.mailboxPath?.isNotEmpty == true) { return Text( - widget._presentationMailbox.mailboxPath ?? '', + (widget._presentationMailbox.mailboxPath ?? '').withUnicodeCharacter, maxLines: 1, overflow: CommonTextStyle.defaultTextOverFlow, softWrap: CommonTextStyle.defaultSoftWrap, @@ -230,7 +231,7 @@ class _MailboxSearchedItemBuilderState extends State ); } else if (widget._presentationMailbox.isTeamMailboxes) { return Text( - widget._presentationMailbox.emailTeamMailBoxes ?? '', + (widget._presentationMailbox.emailTeamMailBoxes ?? '').withUnicodeCharacter, maxLines: 1, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow, diff --git a/lib/features/thread/presentation/mixin/base_email_item_tile.dart b/lib/features/thread/presentation/mixin/base_email_item_tile.dart index da339fe6c..c42f6aeed 100644 --- a/lib/features/thread/presentation/mixin/base_email_item_tile.dart +++ b/lib/features/thread/presentation/mixin/base_email_item_tile.dart @@ -1,5 +1,6 @@ import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/extensions/string_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; @@ -39,7 +40,7 @@ mixin BaseEmailItemTile { borderRadius: BorderRadius.circular(10), color: AppColor.backgroundCounterMailboxColor), child: Text( - email.mailboxName, + email.mailboxName.withUnicodeCharacter, maxLines: 1, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow, @@ -84,7 +85,7 @@ mixin BaseEmailItemTile { ) { if (isSearchEnabled(isSearchEmailRunning, query)) { return RichTextBuilder( - informationSender(email, mailbox), + informationSender(email, mailbox).withUnicodeCharacter, query?.value ?? '', TextStyle( fontSize: 15, @@ -98,7 +99,7 @@ mixin BaseEmailItemTile { ).build(); } else { return Text( - informationSender(email, mailbox), + informationSender(email, mailbox).withUnicodeCharacter, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow, maxLines: 1, @@ -118,7 +119,7 @@ mixin BaseEmailItemTile { ) { if (isSearchEnabled(isSearchEmailRunning, query)) { return RichTextBuilder( - email.getEmailTitle(), + email.getEmailTitle().withUnicodeCharacter, query?.value ?? '', TextStyle( fontSize: 13, @@ -132,7 +133,7 @@ mixin BaseEmailItemTile { ).build(); } else { return Text( - email.getEmailTitle(), + email.getEmailTitle().withUnicodeCharacter, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow, maxLines: 1, @@ -151,7 +152,7 @@ mixin BaseEmailItemTile { ) { if (isSearchEnabled(isSearchEmailRunning, query)) { return RichTextBuilder( - email.getPartialContent(), + email.getPartialContent().withUnicodeCharacter, query?.value ?? '', const TextStyle( fontSize: 13, @@ -164,7 +165,7 @@ mixin BaseEmailItemTile { ).build(); } else { return Text( - email.getPartialContent(), + email.getPartialContent().withUnicodeCharacter, maxLines: 1, softWrap: CommonTextStyle.defaultSoftWrap, overflow: CommonTextStyle.defaultTextOverFlow,