TF-2667 Use Username replace UserProfile
This commit is contained in:
+2
-6
@@ -199,7 +199,6 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final selectedMailbox = Rxn<PresentationMailbox>();
|
||||
final selectedEmail = Rxn<PresentationEmail>();
|
||||
final accountId = Rxn<AccountId>();
|
||||
final userProfile = Rxn<UserProfile>();
|
||||
final dashBoardAction = Rxn<UIAction>();
|
||||
final mailboxUIAction = Rxn<MailboxUIAction>();
|
||||
final emailUIAction = Rxn<EmailUIAction>();
|
||||
@@ -514,7 +513,6 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final currentAccountId = session.personalAccount.accountId;
|
||||
sessionCurrent = session;
|
||||
accountId.value = currentAccountId;
|
||||
userProfile.value = UserProfile(session.username.value);
|
||||
|
||||
injectAutoCompleteBindings(session, currentAccountId);
|
||||
injectRuleFilterBindings(session, currentAccountId);
|
||||
@@ -1447,13 +1445,12 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
void selectQuickSearchFilter(QuickSearchFilter filter) {
|
||||
return searchController.selectQuickSearchFilter(filter, userProfile.value!);
|
||||
return searchController.selectQuickSearchFilter(filter);
|
||||
}
|
||||
|
||||
void selectQuickSearchFilterFrom(EmailAddress fromEmailFilter) {
|
||||
return searchController.selectQuickSearchFilter(
|
||||
QuickSearchFilter.fromMe,
|
||||
userProfile.value!,
|
||||
fromEmailFilter: fromEmailFilter
|
||||
);
|
||||
}
|
||||
@@ -1463,11 +1460,10 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
|
||||
Future<List<PresentationEmail>> quickSearchEmails(String query) async {
|
||||
if (sessionCurrent != null && accountId.value != null && userProfile.value != null) {
|
||||
if (sessionCurrent != null && accountId.value != null) {
|
||||
return searchController.quickSearchEmails(
|
||||
session: sessionCurrent!,
|
||||
accountId: accountId.value!,
|
||||
userProfile: userProfile.value!,
|
||||
query: query
|
||||
);
|
||||
} else {
|
||||
|
||||
@@ -9,6 +9,7 @@ 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_address.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
|
||||
@@ -17,7 +18,6 @@ import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/email_filter_condition_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/user/user_profile.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/date_range_picker_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
@@ -73,10 +73,9 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
|
||||
void selectQuickSearchFilter(
|
||||
QuickSearchFilter quickSearchFilter,
|
||||
UserProfile userProfile,
|
||||
{EmailAddress? fromEmailFilter}
|
||||
) {
|
||||
final isFilterSelected = quickSearchFilter.isSelected(searchEmailFilter.value, userProfile);
|
||||
final isFilterSelected = quickSearchFilter.isSelected(searchEmailFilter.value);
|
||||
|
||||
switch (quickSearchFilter) {
|
||||
case QuickSearchFilter.hasAttachment:
|
||||
@@ -110,7 +109,6 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
required Session session,
|
||||
required AccountId accountId,
|
||||
required String query,
|
||||
required UserProfile userProfile,
|
||||
}) async {
|
||||
return await _quickSearchEmailInteractor.execute(
|
||||
session,
|
||||
@@ -119,7 +117,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
sort: <Comparator>{}..add(
|
||||
EmailComparator(EmailComparatorProperty.receivedAt)
|
||||
..setIsAscending(false)),
|
||||
filter: _mappingToFilterOnSuggestionForm(userProfile: userProfile, query: query),
|
||||
filter: _mappingToFilterOnSuggestionForm(userName: session.username, query: query),
|
||||
properties: ThreadConstants.propertiesQuickSearch
|
||||
).then((result) => result.fold(
|
||||
(failure) => <PresentationEmail>[],
|
||||
@@ -129,7 +127,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
));
|
||||
}
|
||||
|
||||
Filter? _mappingToFilterOnSuggestionForm({required String query, required UserProfile userProfile}) {
|
||||
Filter? _mappingToFilterOnSuggestionForm({required String query, required UserName userName}) {
|
||||
log('SearchController::_mappingToFilterOnSuggestionForm():query: $query');
|
||||
final filterCondition = EmailFilterCondition(
|
||||
text: query.isNotEmpty == true ? query : null,
|
||||
@@ -143,7 +141,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
? true
|
||||
: null,
|
||||
from: listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)
|
||||
? userProfile.email
|
||||
? userName.value
|
||||
: null
|
||||
);
|
||||
|
||||
@@ -152,7 +150,7 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
: null;
|
||||
}
|
||||
|
||||
void applyFilterSuggestionToSearchFilter(UserProfile? userProfile) {
|
||||
void applyFilterSuggestionToSearchFilter(UserName? userName) {
|
||||
final receiveTime = listFilterOnSuggestionForm.contains(QuickSearchFilter.last7Days)
|
||||
? EmailReceiveTimeType.last7Days
|
||||
: EmailReceiveTimeType.allTime;
|
||||
@@ -160,11 +158,11 @@ class SearchController extends BaseController with DateRangePickerMixin {
|
||||
final hasAttachment = listFilterOnSuggestionForm.contains(QuickSearchFilter.hasAttachment) ? true : false;
|
||||
|
||||
var listFromAddress = searchEmailFilter.value.from;
|
||||
if (userProfile != null) {
|
||||
if (userName != null) {
|
||||
if (listFilterOnSuggestionForm.contains(QuickSearchFilter.fromMe)) {
|
||||
listFromAddress.add(userProfile.email);
|
||||
listFromAddress.add(userName.value);
|
||||
} else {
|
||||
listFromAddress.remove(userProfile.email);
|
||||
listFromAddress.remove(userName.value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_portal/flutter_portal.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/extensions/username_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
|
||||
@@ -339,13 +340,13 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
: const SizedBox.shrink(),
|
||||
const SizedBox(width: 24),
|
||||
Obx(() => (AvatarBuilder()
|
||||
..text(controller.userProfile.value?.getAvatarText() ?? '')
|
||||
..text(controller.sessionCurrent?.username.firstCharacter ?? '')
|
||||
..backgroundColor(Colors.white)
|
||||
..textColor(Colors.black)
|
||||
..context(context)
|
||||
..addOnTapAvatarActionWithPositionClick((position) =>
|
||||
controller.openPopupMenuAction(context, position, popupMenuUserSettingActionTile(context,
|
||||
controller.userProfile.value,
|
||||
controller.sessionCurrent?.username,
|
||||
onLogoutAction: () {
|
||||
popBack();
|
||||
controller.logout(controller.sessionCurrent, controller.accountId.value);
|
||||
@@ -598,7 +599,6 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
return Obx(() {
|
||||
final isFilterSelected = filter.isSelected(
|
||||
controller.searchController.searchEmailFilter.value,
|
||||
controller.userProfile.value
|
||||
);
|
||||
|
||||
return Padding(
|
||||
@@ -776,7 +776,8 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
String _getQuickSearchFilterFromTitle(BuildContext context) {
|
||||
final searchEmailFilterFromFiled = controller.searchController.searchEmailFilter.value.from;
|
||||
if (searchEmailFilterFromFiled.length == 1) {
|
||||
if (searchEmailFilterFromFiled.first == controller.userProfile.value?.email) {
|
||||
if (searchEmailFilterFromFiled.first == controller.sessionCurrent?.username.value &&
|
||||
controller.sessionCurrent?.username.value.isNotEmpty == true) {
|
||||
return QuickSearchFilter.fromMe.getTitle(context);
|
||||
} else {
|
||||
return '${AppLocalizations.of(context).from_email_address_prefix} ${searchEmailFilterFromFiled.first}';
|
||||
|
||||
+25
-23
@@ -1,8 +1,10 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
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:model/model.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
mixin UserSettingPopupMenuMixin {
|
||||
@@ -10,18 +12,33 @@ mixin UserSettingPopupMenuMixin {
|
||||
|
||||
List<PopupMenuEntry> popupMenuUserSettingActionTile(
|
||||
BuildContext context,
|
||||
UserProfile? userProfile,
|
||||
UserName? userName,
|
||||
{
|
||||
Function? onLogoutAction,
|
||||
Function? onSettingAction
|
||||
}
|
||||
) {
|
||||
return [
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
padding: EdgeInsets.zero,
|
||||
child: _userInformation(context, userProfile)
|
||||
),
|
||||
if (userName != null)
|
||||
PopupMenuItem(
|
||||
enabled: false,
|
||||
padding: EdgeInsets.zero,
|
||||
child: SizedBox(
|
||||
width: 300,
|
||||
child: ListTile(
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
|
||||
title: Text(
|
||||
userName.value,
|
||||
maxLines: 1,
|
||||
style: const TextStyle(
|
||||
fontSize: 15,
|
||||
color: AppColor.colorHintSearchBar,
|
||||
fontWeight: FontWeight.normal
|
||||
)
|
||||
)
|
||||
),
|
||||
)
|
||||
),
|
||||
if (onSettingAction != null)
|
||||
...[
|
||||
const PopupMenuDivider(height: 0.5),
|
||||
@@ -42,21 +59,6 @@ mixin UserSettingPopupMenuMixin {
|
||||
];
|
||||
}
|
||||
|
||||
Widget _userInformation(BuildContext context, UserProfile? userProfile) {
|
||||
if (userProfile != null) {
|
||||
return SizedBox(
|
||||
width: 300,
|
||||
child: ListTile(
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
|
||||
title: Text(userProfile.email, maxLines: 1, style: const TextStyle(
|
||||
fontSize: 15,
|
||||
color: AppColor.colorHintSearchBar,
|
||||
fontWeight: FontWeight.normal))),
|
||||
);
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
Widget _settingAction(BuildContext context, Function? onCallBack) {
|
||||
return PopupMenuItemWidget(
|
||||
_imagePaths.icSetting,
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:model/user/user_profile.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';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
||||
@@ -89,7 +88,7 @@ enum QuickSearchFilter {
|
||||
|
||||
bool isApplied(List<QuickSearchFilter> listFilter) => listFilter.contains(this);
|
||||
|
||||
bool isSelected(SearchEmailFilter filter, UserProfile? userProfile) {
|
||||
bool isSelected(SearchEmailFilter filter) {
|
||||
switch (this) {
|
||||
case QuickSearchFilter.hasAttachment:
|
||||
return filter.hasAttachment == true;
|
||||
|
||||
@@ -125,7 +125,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
}
|
||||
|
||||
if (query.isNotEmpty || _searchController.listFilterOnSuggestionForm.isNotEmpty) {
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.userProfile.value);
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
|
||||
_dashBoardController.searchEmail(context, queryString: query);
|
||||
} else {
|
||||
_dashBoardController.clearSearchEmail();
|
||||
@@ -146,7 +146,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||
_searchController.searchFocus.unfocus();
|
||||
_searchController.enableSearch();
|
||||
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.userProfile.value);
|
||||
_searchController.applyFilterSuggestionToSearchFilter(_dashBoardController.sessionCurrent?.username);
|
||||
_dashBoardController.searchEmail(context, queryString: recent.value);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user