TF-3717 Allow access settings when own email address is null

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-05-19 16:05:52 +07:00
committed by Dat H. Pham
parent d9d300edc1
commit 25c2eb0ace
13 changed files with 54 additions and 44 deletions
+1 -1
View File
@@ -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 {
@@ -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<void> 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
@@ -26,16 +26,20 @@ extension CreateEmailRequestExtension on CreateEmailRequest {
Set<EmailAddress> 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;
}
@@ -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');
@@ -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 '';
@@ -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);
}
@@ -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() {
@@ -98,7 +98,10 @@ class SearchController extends BaseController with DateRangePickerMixin {
sort: <Comparator>{}..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) => <PresentationEmail>[],
@@ -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;
@@ -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);
}
@@ -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() {
@@ -257,7 +257,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
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;
@@ -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()