diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index b7f2b6584..ea648780d 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -428,7 +428,7 @@ abstract class BaseController extends GetxController if (PlatformInfo.isMobile) { showLogoutConfirmDialog( context: context, - userAddress: session?.getOwnEmailAddress() ?? '', + userAddress: session?.getOwnEmailAddressOrEmpty() ?? '', onConfirmAction: () => _handleLogoutAction(session, accountId), ); } else { diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 7bd72b9a7..5b5277bf2 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -243,7 +243,7 @@ class ComposerController extends BaseController int? get savedEmailDraftHash => _savedEmailDraftHash; GetEmailContentInteractor get getEmailContentInteractor => _getEmailContentInteractor; - + GetServerSettingInteractor get getServerSettingInteractor => _getServerSettingInteractor; GetAllIdentitiesInteractor get getAllIdentitiesInteractor => _getAllIdentitiesInteractor; @@ -622,7 +622,7 @@ class ComposerController extends BaseController mailboxDashBoardController.accountId.value, ); } - + Future setupComposer() async { _isEmailBodyLoaded = false; final arguments = PlatformInfo.isWeb ? composerArgs : Get.arguments; @@ -687,7 +687,7 @@ class ComposerController extends BaseController required EmailActionType actionType, String? listPost, }) { - final senderEmailAddress = mailboxDashBoardController.sessionCurrent?.getOwnEmailAddress(); + final senderEmailAddress = mailboxDashBoardController.sessionCurrent?.getOwnEmailAddressOrEmpty(); final isSender = presentationEmail.from .asList() .any((element) => element.emailAddress.isNotEmpty && element.emailAddress == senderEmailAddress); @@ -1285,7 +1285,7 @@ class ComposerController extends BaseController log('ComposerController::handleClickSaveAsTemplateButton: SESSION or ACCOUNT_ID or ARGUMENTS is NULL'); return; } - + MailboxId? templateMailboxId = mailboxDashBoardController .getMailboxIdByRole(PresentationMailbox.roleTemplates); templateMailboxId ??= mailboxDashBoardController.mapMailboxById diff --git a/lib/features/composer/presentation/extensions/create_email_request_extension.dart b/lib/features/composer/presentation/extensions/create_email_request_extension.dart index 970427c97..a342c9937 100644 --- a/lib/features/composer/presentation/extensions/create_email_request_extension.dart +++ b/lib/features/composer/presentation/extensions/create_email_request_extension.dart @@ -26,16 +26,20 @@ extension CreateEmailRequestExtension on CreateEmailRequest { Set createSenders() { if (identity?.email?.isNotEmpty == true) { return { identity!.toEmailAddress() }; + } else if (session.getOwnEmailAddressOrEmpty().isNotEmpty) { + return { EmailAddress(null, session.getOwnEmailAddressOrEmpty()) }; } else { - return { EmailAddress(null, session.getOwnEmailAddress()) }; + return {}; } } String createMdnEmailAddress() { if (emailActionType == EmailActionType.editDraft && fromSender?.isNotEmpty == true) { return fromSender!.first.emailAddress; + } else if (session.getOwnEmailAddressOrEmpty().isNotEmpty) { + return session.getOwnEmailAddressOrEmpty(); } else { - return session.getOwnEmailAddress(); + return ''; } } @@ -48,7 +52,9 @@ extension CreateEmailRequestExtension on CreateEmailRequest { return identity?.replyTo?.isNotEmpty == true ? identity!.replyTo! - : {EmailAddress(null, session.getOwnEmailAddress())}; + : session.getOwnEmailAddressOrEmpty().isNotEmpty + ? {EmailAddress(null, session.getOwnEmailAddressOrEmpty())} + : null; } diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index 4cefd3a29..32dd345e3 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -1623,7 +1623,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { return; } - final receiverEmailAddress = _getReceiverEmailAddress(currentEmail!) ?? session!.getOwnEmailAddress(); + final receiverEmailAddress = _getReceiverEmailAddress(currentEmail!) ?? session!.getOwnEmailAddressOrEmpty(); log('SingleEmailController::_handleSendReceiptToSenderAction():receiverEmailAddress: $receiverEmailAddress'); final mdnToSender = _generateMDN(context, currentEmail!, receiverEmailAddress); final sendReceiptRequest = SendReceiptToSenderRequest( @@ -2568,13 +2568,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { } } - String getOwnEmailAddress() { - try { - return session?.getOwnEmailAddress() ?? ''; - } catch (e) { - return ''; - } - } + String getOwnEmailAddress() => session?.getOwnEmailAddressOrEmpty() ?? ''; void onHtmlContentClippedAction(bool isClipped) { log('SingleEmailController::onHtmlContentClippedAction:isClipped = $isClipped'); diff --git a/lib/features/home/domain/extensions/session_extensions.dart b/lib/features/home/domain/extensions/session_extensions.dart index 9d5feac11..9f47307ed 100644 --- a/lib/features/home/domain/extensions/session_extensions.dart +++ b/lib/features/home/domain/extensions/session_extensions.dart @@ -64,7 +64,7 @@ extension SessionExtensions on Session { String get internalDomain { try { - return getOwnEmailAddress().split('@').last; + return getOwnEmailAddressOrEmpty().split('@').last; } catch (e) { logError('SessionExtensions::internalDomain: Exception: $e'); return ''; diff --git a/lib/features/identity_creator/presentation/identity_creator_controller.dart b/lib/features/identity_creator/presentation/identity_creator_controller.dart index c1fcacbe8..f2028a2cb 100644 --- a/lib/features/identity_creator/presentation/identity_creator_controller.dart +++ b/lib/features/identity_creator/presentation/identity_creator_controller.dart @@ -359,9 +359,12 @@ class IdentityCreatorController extends BaseController with DragDropFileMixin im .toSet() .toList(); - if(session?.getOwnEmailAddress() != null - && !listEmailAddressDefault.any((emailAddress) => emailAddress.email == session?.getOwnEmailAddress())) { - listEmailAddressDefault.add(EmailAddress(null, session?.getOwnEmailAddress())); + if(session?.getOwnEmailAddressOrEmpty().isNotEmpty == true + && !listEmailAddressDefault.any((emailAddress) => emailAddress.email == session?.getOwnEmailAddressOrEmpty())) { + listEmailAddressDefault.add(EmailAddress( + null, + session?.getOwnEmailAddressOrEmpty(), + )); } listEmailAddressOfReplyTo.add(noneEmailAddress); listEmailAddressOfReplyTo.addAll(listEmailAddressDefault); @@ -382,8 +385,11 @@ class IdentityCreatorController extends BaseController with DragDropFileMixin im void _setDefaultEmailAddressList() { listEmailAddressOfReplyTo.add(noneEmailAddress); - if (session?.getOwnEmailAddress() != null) { - final userEmailAddress = EmailAddress(null, session?.getOwnEmailAddress()); + if (session?.getOwnEmailAddressOrEmpty().isNotEmpty == true) { + final userEmailAddress = EmailAddress( + null, + session?.getOwnEmailAddressOrEmpty(), + ); listEmailAddressDefault.add(userEmailAddress); listEmailAddressOfReplyTo.addAll(listEmailAddressDefault); } diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index c2b1c9b9c..563eb8b89 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -3145,7 +3145,7 @@ class MailboxDashBoardController extends ReloadableController position, popupMenuUserSettingActionTile( context, - sessionCurrent?.getOwnEmailAddress(), + sessionCurrent?.getOwnEmailAddressOrEmpty(), onLogoutAction: () { popBack(); logout( @@ -3213,14 +3213,7 @@ class MailboxDashBoardController extends ReloadableController } } - String getOwnEmailAddress() { - try { - return sessionCurrent?.getOwnEmailAddress() ?? ''; - } catch (e) { - logError('ManageAccountDashBoardController::getOwnEmailAddress:Exception: $e'); - return ''; - } - } + String getOwnEmailAddress() => sessionCurrent?.getOwnEmailAddressOrEmpty() ?? ''; @override void onClose() { diff --git a/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart index 5a7b2afa6..2a5057431 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/search_controller.dart @@ -98,7 +98,10 @@ class SearchController extends BaseController with DateRangePickerMixin { sort: {}..add( EmailComparator(EmailComparatorProperty.receivedAt) ..setIsAscending(false)), - filter: _mappingToFilterOnSuggestionForm(currentUserEmail: session.getOwnEmailAddress(), query: query), + filter: _mappingToFilterOnSuggestionForm( + currentUserEmail: session.getOwnEmailAddressOrEmpty(), + query: query, + ), properties: EmailUtils.getPropertiesForEmailGetMethod(session, accountId), ).then((result) => result.fold( (failure) => [], diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index e9b63e179..bad9460d6 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -566,7 +566,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { final searchEmailFilter = controller.searchController.searchEmailFilter.value; final sortOrderType = controller.searchController.sortOrderFiltered; final listAddressOfFrom = controller.searchController.listAddressOfFromFiltered; - final currentUserEmail = controller.sessionCurrent?.getOwnEmailAddress(); + final currentUserEmail = controller.sessionCurrent?.getOwnEmailAddressOrEmpty(); final startDate = controller.searchController.startDateFiltered; final endDate = controller.searchController.endDateFiltered; final receiveTimeType = controller.searchController.receiveTimeFiltered; diff --git a/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart b/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart index f7ea4651a..9dd8c24f3 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart @@ -147,7 +147,9 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin { if (queryString.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) { _searchController.clearSearchFilter(); - _searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.getOwnEmailAddress()); + _searchController.applyFilterSuggestionToSearchFilter( + _dashBoardController.sessionCurrent?.getOwnEmailAddressOrEmpty(), + ); _dashBoardController.searchEmailByQueryString(queryString); } else { _dashBoardController.clearSearchEmail(); @@ -167,7 +169,9 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin { _searchController.searchFocus.unfocus(); _searchController.enableSearch(); _searchController.clearSearchFilter(); - _searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.getOwnEmailAddress()); + _searchController.applyFilterSuggestionToSearchFilter( + _dashBoardController.sessionCurrent?.getOwnEmailAddressOrEmpty(), + ); _dashBoardController.searchEmailByQueryString(recent.value); } diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index 4a88373d4..55f4bbae9 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -404,14 +404,8 @@ class ManageAccountDashBoardController extends ReloadableController with UserSet accountId: accountId.value!); } - String getOwnEmailAddress() { - try { - return sessionCurrent?.getOwnEmailAddress() ?? ''; - } catch (e) { - logError('ManageAccountDashBoardController::getOwnEmailAddress:Exception: $e'); - return ''; - } - } + String getOwnEmailAddress() => + sessionCurrent?.getOwnEmailAddressOrEmpty() ?? ''; @override void onClose() { diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 74aef5b8d..a5bcf8c25 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -257,7 +257,7 @@ class SearchEmailView extends GetWidget final searchEmailFilter = controller.searchEmailFilter.value; final sortOrderType = controller.emailSortOrderType.value; final listAddressOfFrom = controller.listAddressOfFromFiltered; - final currentUserEmail = controller.session?.getOwnEmailAddress(); + final currentUserEmail = controller.session?.getOwnEmailAddressOrEmpty(); final startDate = controller.startDateFiltered; final endDate = controller.endDateFiltered; final receiveTimeType = controller.receiveTimeFiltered; diff --git a/model/lib/extensions/session_extension.dart b/model/lib/extensions/session_extension.dart index 8e9b34fa6..1fe78a1c2 100644 --- a/model/lib/extensions/session_extension.dart +++ b/model/lib/extensions/session_extension.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:core/presentation/extensions/uri_extension.dart'; +import 'package:core/utils/app_logger.dart'; import 'package:get/get_utils/src/extensions/string_extensions.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/capability/calendar_event_capability.dart'; @@ -71,6 +72,15 @@ extension SessionExtension on Session { } } + String getOwnEmailAddressOrEmpty() { + try { + return getOwnEmailAddress(); + } catch (e) { + logError('SessionExtension::getOwnEmailAddressOrEmpty:Exception: $e'); + return ''; + } + } + String getOwnEmailAddress() { return username.value.isEmail ? username.value : _getOwnEmailAddressFromPersonalAccount()