TF-2305 Session::getOwnEmailAddress method to fetch the user email address from urn:ietf:params:jmap:principals imip mailto property if not present in the session username, which is the case for Cyrus
This commit is contained in:
committed by
Dat H. Pham
parent
327af38fb0
commit
6720709a2e
+2
-2
@@ -3125,7 +3125,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
isRecoveringDeletedMessage.value = true;
|
||||
}
|
||||
|
||||
String get userEmail => sessionCurrent?.username.value ?? '';
|
||||
String get userEmail => sessionCurrent?.getOwnEmailAddress() ?? '';
|
||||
|
||||
Future<void> _removeComposerCacheOnWeb() async {
|
||||
await _removeComposerCacheOnWebInteractor.execute();
|
||||
@@ -3162,7 +3162,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
position,
|
||||
popupMenuUserSettingActionTile(
|
||||
context,
|
||||
sessionCurrent?.username,
|
||||
sessionCurrent?.getOwnEmailAddress(),
|
||||
onLogoutAction: () {
|
||||
popBack();
|
||||
logout(
|
||||
|
||||
@@ -9,7 +9,6 @@ import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
|
||||
@@ -17,6 +16,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/email_filter_condition_extension.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/date_range_picker_mixin.dart';
|
||||
@@ -98,7 +98,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
sort: <Comparator>{}..add(
|
||||
EmailComparator(EmailComparatorProperty.receivedAt)
|
||||
..setIsAscending(false)),
|
||||
filter: _mappingToFilterOnSuggestionForm(userName: session.username, query: query),
|
||||
filter: _mappingToFilterOnSuggestionForm(currentUserEmail: session.getOwnEmailAddress(), query: query),
|
||||
properties: EmailUtils.getPropertiesForEmailGetMethod(session, accountId),
|
||||
).then((result) => result.fold(
|
||||
(failure) => <PresentationEmail>[],
|
||||
@@ -108,7 +108,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
));
|
||||
}
|
||||
|
||||
Filter? _mappingToFilterOnSuggestionForm({required String query, required UserName userName}) {
|
||||
Filter? _mappingToFilterOnSuggestionForm({required String query, required String currentUserEmail}) {
|
||||
log('SearchController::_mappingToFilterOnSuggestionForm():query: $query');
|
||||
final filterCondition = EmailFilterCondition(
|
||||
text: query.isNotEmpty == true ? query : null,
|
||||
@@ -122,7 +122,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
? true
|
||||
: null,
|
||||
from: listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)
|
||||
? userName.value
|
||||
? currentUserEmail
|
||||
: null,
|
||||
hasKeyword: listFilterOnSuggestionForm.contains(QuickSearchFilter.starred)
|
||||
? KeyWordIdentifier.emailFlagged.value
|
||||
@@ -134,7 +134,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
: null;
|
||||
}
|
||||
|
||||
void applyFilterSuggestionToSearchFilter(UserName? userName) {
|
||||
void applyFilterSuggestionToSearchFilter(String? currentUserEmail) {
|
||||
final receiveTime = listFilterOnSuggestionForm.contains(QuickSearchFilter.last7Days)
|
||||
? EmailReceiveTimeType.last7Days
|
||||
: EmailReceiveTimeType.allTime;
|
||||
@@ -142,11 +142,11 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
final hasAttachment = listFilterOnSuggestionForm.contains(QuickSearchFilter.hasAttachment) ? true : false;
|
||||
|
||||
var listFromAddress = searchEmailFilter.value.from;
|
||||
if (userName != null) {
|
||||
if (currentUserEmail != null) {
|
||||
if (listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)) {
|
||||
listFromAddress.add(userName.value);
|
||||
listFromAddress.add(currentUserEmail);
|
||||
} else {
|
||||
listFromAddress.remove(userName.value);
|
||||
listFromAddress.remove(currentUserEmail);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:model/extensions/username_extension.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart';
|
||||
@@ -540,7 +541,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
final searchEmailFilter = controller.searchController.searchEmailFilter.value;
|
||||
final sortOrderType = controller.searchController.sortOrderFiltered;
|
||||
final listAddressOfFrom = controller.searchController.listAddressOfFromFiltered;
|
||||
final userName = controller.sessionCurrent?.username;
|
||||
final currentUserEmail = controller.sessionCurrent?.getOwnEmailAddress();
|
||||
final startDate = controller.searchController.startDateFiltered;
|
||||
final endDate = controller.searchController.endDateFiltered;
|
||||
final receiveTimeType = controller.searchController.receiveTimeFiltered;
|
||||
@@ -551,7 +552,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
context,
|
||||
searchEmailFilter,
|
||||
sortOrderType,
|
||||
userName);
|
||||
currentUserEmail);
|
||||
|
||||
EdgeInsetsGeometry? buttonPadding;
|
||||
if (searchFilter != QuickSearchFilter.sortBy) {
|
||||
@@ -570,7 +571,6 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
sortOrderType: sortOrderType,
|
||||
listAddressOfFrom: listAddressOfFrom,
|
||||
listAddressOfTo: listAddressOfTo,
|
||||
userName: userName,
|
||||
mailbox: mailbox,
|
||||
buttonPadding: buttonPadding,
|
||||
onSelectSearchFilterAction: _onSelectSearchFilterAction,
|
||||
|
||||
+3
-4
@@ -4,7 +4,6 @@ import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/views/popup_menu/popup_menu_item_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
mixin UserSettingPopupMenuMixin {
|
||||
@@ -12,14 +11,14 @@ mixin UserSettingPopupMenuMixin {
|
||||
|
||||
List<PopupMenuEntry> popupMenuUserSettingActionTile(
|
||||
BuildContext context,
|
||||
UserName? userName,
|
||||
String? currentUserEmail,
|
||||
{
|
||||
Function? onLogoutAction,
|
||||
Function? onSettingAction
|
||||
}
|
||||
) {
|
||||
return [
|
||||
if (userName != null)
|
||||
if(currentUserEmail != null)
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
padding: EdgeInsets.zero,
|
||||
@@ -28,7 +27,7 @@ mixin UserSettingPopupMenuMixin {
|
||||
child: ListTile(
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
|
||||
title: SelectableText(
|
||||
userName.value,
|
||||
currentUserEmail,
|
||||
maxLines: 1,
|
||||
style: const TextStyle(
|
||||
fontSize: 15,
|
||||
|
||||
@@ -126,7 +126,7 @@ enum QuickSearchFilter {
|
||||
BuildContext context,
|
||||
SearchEmailFilter searchFilter,
|
||||
EmailSortOrderType sortOrderType,
|
||||
UserName? userName,
|
||||
String? currentUserEmail,
|
||||
) {
|
||||
switch (this) {
|
||||
case QuickSearchFilter.hasAttachment:
|
||||
@@ -135,8 +135,8 @@ enum QuickSearchFilter {
|
||||
return searchFilter.emailReceiveTimeType == EmailReceiveTimeType.last7Days;
|
||||
case QuickSearchFilter.fromMe:
|
||||
return searchFilter.from.length == 1 &&
|
||||
userName?.value.isNotEmpty == true &&
|
||||
userName?.value == searchFilter.from.first;
|
||||
currentUserEmail?.isNotEmpty == true &&
|
||||
currentUserEmail == searchFilter.from.first;
|
||||
case QuickSearchFilter.sortBy:
|
||||
return sortOrderType != EmailSortOrderType.mostRecent;
|
||||
case QuickSearchFilter.dateTime:
|
||||
|
||||
-4
@@ -4,7 +4,6 @@ import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/views/button/tmail_button_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
||||
@@ -31,7 +30,6 @@ class SearchFilterButton extends StatelessWidget {
|
||||
final DateTime? endDate;
|
||||
final Set<String>? listAddressOfFrom;
|
||||
final Set<String>? listAddressOfTo;
|
||||
final UserName? userName;
|
||||
final PresentationMailbox? mailbox;
|
||||
final Color? backgroundColor;
|
||||
final EdgeInsetsGeometry? buttonPadding;
|
||||
@@ -50,7 +48,6 @@ class SearchFilterButton extends StatelessWidget {
|
||||
this.endDate,
|
||||
this.listAddressOfFrom,
|
||||
this.listAddressOfTo,
|
||||
this.userName,
|
||||
this.mailbox,
|
||||
this.backgroundColor,
|
||||
this.buttonPadding,
|
||||
@@ -67,7 +64,6 @@ class SearchFilterButton extends StatelessWidget {
|
||||
endDate: startDate,
|
||||
sortOrderType: sortOrderType,
|
||||
listAddressOfFrom: listAddressOfFrom,
|
||||
userName: userName,
|
||||
mailbox: mailbox,
|
||||
listAddressOfTo: listAddressOfTo,
|
||||
);
|
||||
|
||||
@@ -15,6 +15,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
@@ -146,7 +147,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
|
||||
if (queryString.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) {
|
||||
_searchController.clearSearchFilter();
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.getOwnEmailAddress());
|
||||
_dashBoardController.searchEmailByQueryString(queryString);
|
||||
} else {
|
||||
_dashBoardController.clearSearchEmail();
|
||||
@@ -166,7 +167,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
_searchController.searchFocus.unfocus();
|
||||
_searchController.enableSearch();
|
||||
_searchController.clearSearchFilter();
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.getOwnEmailAddress());
|
||||
_dashBoardController.searchEmailByQueryString(recent.value);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user