TF-1063 Disable search email when open mailbox

This commit is contained in:
dab246
2022-11-03 01:24:27 +07:00
committed by Dat H. Pham
parent 95721008c1
commit 46fa9b3006
14 changed files with 275 additions and 196 deletions
@@ -239,8 +239,10 @@ class MailboxController extends BaseMailboxController {
}); });
dashboardActionWorker = ever(mailboxDashBoardController.dashBoardAction, (action) { dashboardActionWorker = ever(mailboxDashBoardController.dashBoardAction, (action) {
if(action is DashBoardAction) { if (action is ClearSearchEmailAction) {
if(action is ClearSearchEmailAction) { _switchBackToMailboxDefault();
} else if (action is SelectMailboxDefaultAction) {
if (mailboxDashBoardController.selectedMailbox.value == null) {
_switchBackToMailboxDefault(); _switchBackToMailboxDefault();
} }
} }
@@ -369,9 +371,7 @@ class MailboxController extends BaseMailboxController {
mailboxDashBoardController.setSelectedMailbox(presentationMailboxSelected); mailboxDashBoardController.setSelectedMailbox(presentationMailboxSelected);
mailboxDashBoardController.clearSelectedEmail(); mailboxDashBoardController.clearSelectedEmail();
if (mailboxDashBoardController.searchController.isSearchActive()) { _disableAllSearchEmail();
mailboxDashBoardController.searchController.disableSearch();
}
if (_responsiveUtils.hasLeftMenuDrawerActive(context)) { if (_responsiveUtils.hasLeftMenuDrawerActive(context)) {
mailboxDashBoardController.closeMailboxMenuDrawer(); mailboxDashBoardController.closeMailboxMenuDrawer();
@@ -380,6 +380,11 @@ class MailboxController extends BaseMailboxController {
} }
} }
void _disableAllSearchEmail() {
mailboxDashBoardController.dispatchAction(ClearAllFieldOfAdvancedSearchAction());
mailboxDashBoardController.searchController.disableAllSearchEmail();
}
void openMailbox( void openMailbox(
BuildContext context, BuildContext context,
PresentationMailbox presentationMailboxSelected PresentationMailbox presentationMailboxSelected
@@ -72,14 +72,6 @@ class OpenEmailDetailedFromSuggestionQuickSearchAction extends DashBoardAction {
List<Object?> get props => [presentationEmail]; List<Object?> get props => [presentationEmail];
} }
class DisableSearchEmailAction extends DashBoardAction {
DisableSearchEmailAction();
@override
List<Object?> get props => [];
}
class StartSearchEmailAction extends DashBoardAction { class StartSearchEmailAction extends DashBoardAction {
StartSearchEmailAction(); StartSearchEmailAction();
@@ -101,6 +93,20 @@ class EmptyTrashAction extends DashBoardAction {
class ClearSearchEmailAction extends DashBoardAction { class ClearSearchEmailAction extends DashBoardAction {
ClearSearchEmailAction(); ClearSearchEmailAction();
@override
List<Object?> get props => [];
}
class ClearAllFieldOfAdvancedSearchAction extends DashBoardAction {
ClearAllFieldOfAdvancedSearchAction();
@override
List<Object?> get props => [];
}
class SelectMailboxDefaultAction extends DashBoardAction {
SelectMailboxDefaultAction();
@override @override
List<Object?> get props => []; List<Object?> get props => [];
} }
@@ -15,6 +15,7 @@ import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/input_field_focus_manager.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/input_field_focus_manager.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
@@ -62,6 +63,14 @@ class AdvancedFilterController extends BaseController {
DateTime? get endDate => _endDate; DateTime? get endDate => _endDate;
late Worker _dashboardActionWorker;
@override
void onInit() {
_registerWorkerListener();
super.onInit();
}
@override @override
void onReady() { void onReady() {
if (!BuildUtils.isWeb) { if (!BuildUtils.isWeb) {
@@ -80,7 +89,7 @@ class AdvancedFilterController extends BaseController {
} }
void cleanSearchFilter(BuildContext context) { void cleanSearchFilter(BuildContext context) {
searchController.cleanSearchFilter(); searchController.clearSearchFilter();
dateFilterSelectedFormAdvancedSearch.value = EmailReceiveTimeType.allTime; dateFilterSelectedFormAdvancedSearch.value = EmailReceiveTimeType.allTime;
clearDateRangeOfFilter(); clearDateRangeOfFilter();
subjectFilterInputController.text = ''; subjectFilterInputController.text = '';
@@ -88,7 +97,7 @@ class AdvancedFilterController extends BaseController {
notKeyWordFilterInputController.text = ''; notKeyWordFilterInputController.text = '';
dateFilterInputController.text = ''; dateFilterInputController.text = '';
hasAttachment.value = false; hasAttachment.value = false;
searchController.isAdvancedSearchHasApply.value = false; searchController.deactivateAdvancedSearch();
searchController.isAdvancedSearchViewOpen.toggle(); searchController.isAdvancedSearchViewOpen.toggle();
_mailboxDashBoardController.searchEmail( _mailboxDashBoardController.searchEmail(
context, StringConvert.writeNullToEmpty(searchEmailFilter.text?.value)); context, StringConvert.writeNullToEmpty(searchEmailFilter.text?.value));
@@ -167,7 +176,11 @@ class AdvancedFilterController extends BaseController {
void applyAdvancedSearchFilter(BuildContext context) { void applyAdvancedSearchFilter(BuildContext context) {
_updateFilterEmailFromAdvancedSearchView(); _updateFilterEmailFromAdvancedSearchView();
searchController.isAdvancedSearchHasApply.value = isAdvancedSearchHasApplied; if (isAdvancedSearchHasApplied) {
searchController.activateAdvancedSearch();
} else {
searchController.deactivateAdvancedSearch();
}
if (!isAdvancedSearchHasApplied) { if (!isAdvancedSearchHasApplied) {
final newSearchEmailFilter = searchController.searchEmailFilter.value.clearBeforeDate(); final newSearchEmailFilter = searchController.searchEmailFilter.value.clearBeforeDate();
searchController.searchEmailFilter.value = newSearchEmailFilter; searchController.searchEmailFilter.value = newSearchEmailFilter;
@@ -357,6 +370,43 @@ class AdvancedFilterController extends BaseController {
endDate: _endDate.toUTCDate()); endDate: _endDate.toUTCDate());
} }
void _resetAllToOriginalValue() {
dateFilterSelectedFormAdvancedSearch.value = EmailReceiveTimeType.allTime;
hasAttachment.value = false;
lastTextForm.value = '';
lastTextTo.value = '';
_startDate = null;
_endDate = null;
}
void _clearAllTextFieldInput() {
subjectFilterInputController.clear();
hasKeyWordFilterInputController.clear();
notKeyWordFilterInputController.clear();
dateFilterInputController.clear();
mailBoxFilterInputController.clear();
}
void _registerWorkerListener() {
_dashboardActionWorker = ever(
_mailboxDashBoardController.dashBoardAction,
(action) {
if (action is ClearAllFieldOfAdvancedSearchAction) {
_handleClearAllFieldOfAdvancedSearch();
}
}
);
}
void _unregisterWorkerListener() {
_dashboardActionWorker.dispose();
}
void _handleClearAllFieldOfAdvancedSearch() {
_resetAllToOriginalValue();
_clearAllTextFieldInput();
}
@override @override
void onClose() { void onClose() {
focusManager.dispose(); focusManager.dispose();
@@ -365,6 +415,7 @@ class AdvancedFilterController extends BaseController {
notKeyWordFilterInputController.dispose(); notKeyWordFilterInputController.dispose();
mailBoxFilterInputController.dispose(); mailBoxFilterInputController.dispose();
dateFilterInputController.dispose(); dateFilterInputController.dispose();
_unregisterWorkerListener();
super.onClose(); super.onClose();
} }
@@ -426,7 +426,7 @@ class MailboxDashBoardController extends ReloadableController {
void clearSearchEmail() { void clearSearchEmail() {
dispatchAction(ClearSearchEmailAction()); dispatchAction(ClearSearchEmailAction());
searchController.disableSearch(); searchController.disableSimpleSearch();
} }
void _unSelectedMailbox() { void _unSelectedMailbox() {
@@ -1009,7 +1009,7 @@ class MailboxDashBoardController extends ReloadableController {
dashboardRoute.value = route; dashboardRoute.value = route;
if (dashboardRoute.value == DashboardRoutes.searchEmail) { if (dashboardRoute.value == DashboardRoutes.searchEmail) {
searchController.enableSearch(); searchController.activateSimpleSearch();
} }
} }
@@ -1200,6 +1200,7 @@ class MailboxDashBoardController extends ReloadableController {
} }
void selectQuickSearchFilterAction(QuickSearchFilter filter) { void selectQuickSearchFilterAction(QuickSearchFilter filter) {
log('MailboxDashBoardController::selectQuickSearchFilterAction(): filter: $filter');
selectQuickSearchFilter(quickSearchFilter: filter); selectQuickSearchFilter(quickSearchFilter: filter);
dispatchAction(StartSearchEmailAction()); dispatchAction(StartSearchEmailAction());
} }
@@ -34,17 +34,12 @@ class SearchController extends BaseController {
final ResponsiveUtils _responsiveUtils = Get.find<ResponsiveUtils>(); final ResponsiveUtils _responsiveUtils = Get.find<ResponsiveUtils>();
final searchInputController = TextEditingController(); final searchInputController = TextEditingController();
final searchEmailFilter = SearchEmailFilter().obs; final searchEmailFilter = SearchEmailFilter.initial().obs;
final searchState = SearchState.initial().obs; final searchState = SearchState.initial().obs;
final isAdvancedSearchViewOpen = false.obs; final isAdvancedSearchViewOpen = false.obs;
final isAdvancedSearchHasApply = false.obs;
final dateFilterSelectedFormAdvancedSearch = EmailReceiveTimeType.allTime.obs;
final mailboxFilterSelectedFormAdvancedSearch = Rxn<PresentationMailbox>();
final hasAttachment = false.obs;
final emailReceiveTimeType = Rxn<EmailReceiveTimeType>(); final emailReceiveTimeType = Rxn<EmailReceiveTimeType>();
final searchIsActive = RxBool(false); final simpleSearchIsActivated = RxBool(false);
final advancedSearchIsActivated = RxBool(false);
SearchEmailFilter get searchEmailFilterValue => searchEmailFilter.value;
SearchQuery? get searchQuery => searchEmailFilter.value.text; SearchQuery? get searchQuery => searchEmailFilter.value.text;
@@ -66,8 +61,8 @@ class SearchController extends BaseController {
isAdvancedSearchViewOpen.toggle(); isAdvancedSearchViewOpen.toggle();
} }
cleanSearchFilter() { void clearSearchFilter() {
searchEmailFilter.value = SearchEmailFilter(); searchEmailFilter.value = SearchEmailFilter.initial();
} }
void selectQuickSearchFilter({ void selectQuickSearchFilter({
@@ -145,6 +140,7 @@ class SearchController extends BaseController {
startDate: startDate, startDate: startDate,
endDate: endDate, endDate: endDate,
); );
searchEmailFilter.refresh();
} }
void _registerSearchFocusListener() { void _registerSearchFocusListener() {
@@ -152,10 +148,10 @@ class SearchController extends BaseController {
final hasFocus = searchFocus.hasFocus; final hasFocus = searchFocus.hasFocus;
final query = searchEmailFilter.value.text?.value; final query = searchEmailFilter.value.text?.value;
log('SearchController::_registerSearchFocusListener(): hasFocus: $hasFocus | query: $query'); log('SearchController::_registerSearchFocusListener(): hasFocus: $hasFocus | query: $query');
if (!hasFocus && (query == null || query.isEmpty) && isAdvancedSearchHasApply.isFalse) { if (!hasFocus && (query == null || query.isEmpty) && advancedSearchIsActivated.isFalse) {
updateFilterEmail(text: SearchQuery.initial()); updateFilterEmail(text: SearchQuery.initial());
searchInputController.clear(); searchInputController.clear();
cleanSearchFilter(); clearSearchFilter();
searchFocus.unfocus(); searchFocus.unfocus();
} }
}); });
@@ -164,19 +160,16 @@ class SearchController extends BaseController {
bool isSearchActive() => bool isSearchActive() =>
searchState.value.searchStatus == SearchStatus.ACTIVE; searchState.value.searchStatus == SearchStatus.ACTIVE;
bool isAdvanceSearchActive() => isAdvancedSearchHasApply.isTrue; bool get isSearchEmailRunning => simpleSearchIsActivated.isTrue || advancedSearchIsActivated.isTrue;
bool get isSearchEmailRunning => isSearchActive() || isAdvanceSearchActive();
void enableSearch() { void enableSearch() {
searchState.value = searchState.value.enableSearchState(); searchState.value = searchState.value.enableSearchState();
} }
void disableSearch() { void disableSimpleSearch() {
searchState.value = searchState.value.disableSearchState();
updateFilterEmail(text: SearchQuery.initial()); updateFilterEmail(text: SearchQuery.initial());
searchInputController.clear(); _clearAllTextInputSimpleSearch();
searchFocus.unfocus(); hideSimpleSearchFormView();
} }
void clearTextSearch() { void clearTextSearch() {
@@ -237,6 +230,46 @@ class SearchController extends BaseController {
} }
} }
void activateSimpleSearch() {
simpleSearchIsActivated.value = true;
}
void deactivateSimpleSearch() {
simpleSearchIsActivated.value = false;
}
void activateAdvancedSearch() {
advancedSearchIsActivated.value = true;
}
void deactivateAdvancedSearch() {
advancedSearchIsActivated.value = false;
}
void hideAdvancedSearchFormView() {
isAdvancedSearchViewOpen.value = false;
}
void hideSimpleSearchFormView() {
searchState.value = searchState.value.disableSearchState();
}
void _clearAllTextInputSimpleSearch() {
searchInputController.clear();
searchFocus.unfocus();
emailReceiveTimeType.value = null;
}
void disableAllSearchEmail() {
_clearAllTextInputSimpleSearch();
deactivateSimpleSearch();
hideSimpleSearchFormView();
clearSearchFilter();
deactivateAdvancedSearch();
hideAdvancedSearchFormView();
}
@override @override
void onDone() {} void onDone() {}
@@ -1,3 +1,4 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart';
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart'; import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
@@ -7,7 +8,7 @@ import 'package:model/model.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_receive_time_type.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
class SearchEmailFilter { class SearchEmailFilter with EquatableMixin {
final Set<String> from; final Set<String> from;
final Set<String> to; final Set<String> to;
final SearchQuery? text; final SearchQuery? text;
@@ -20,6 +21,8 @@ class SearchEmailFilter {
final UTCDate? startDate; final UTCDate? startDate;
final UTCDate? endDate; final UTCDate? endDate;
factory SearchEmailFilter.initial() => SearchEmailFilter();
SearchEmailFilter({ SearchEmailFilter({
Set<String>? from, Set<String>? from,
Set<String>? to, Set<String>? to,
@@ -108,6 +111,21 @@ class SearchEmailFilter {
? LogicFilterOperator(Operator.AND, listEmailCondition) ? LogicFilterOperator(Operator.AND, listEmailCondition)
: null; : null;
} }
@override
List<Object?> get props => [
from,
to,
text,
subject,
notKeyword,
mailbox,
emailReceiveTimeType,
hasAttachment,
before,
startDate,
endDate
];
} }
extension SearchEmailFilterExtension on SearchEmailFilter { extension SearchEmailFilterExtension on SearchEmailFilter {
@@ -28,13 +28,13 @@ class IconOpenAdvancedSearchWidget extends StatelessWidget {
minSize: 40, minSize: 40,
iconPadding: const EdgeInsets.only(right: 2), iconPadding: const EdgeInsets.only(right: 2),
icon: SvgPicture.asset(_imagePaths.icFilterAdvanced, icon: SvgPicture.asset(_imagePaths.icFilterAdvanced,
color: searchController.isAdvancedSearchViewOpen.isTrue || searchController.isAdvancedSearchHasApply.isTrue color: searchController.isAdvancedSearchViewOpen.isTrue || searchController.advancedSearchIsActivated.isTrue
? AppColor.colorFilterMessageEnabled ? AppColor.colorFilterMessageEnabled
: AppColor.colorFilterMessageDisabled, : AppColor.colorFilterMessageDisabled,
width: 16, width: 16,
height: 16), height: 16),
onTap: () { onTap: () {
if(searchController.isAdvancedSearchViewOpen.isFalse && searchController.isAdvancedSearchHasApply.isFalse){ if(searchController.isAdvancedSearchViewOpen.isFalse && searchController.advancedSearchIsActivated.isFalse){
advancedFilterController.initSearchFilterField(context); advancedFilterController.initSearchFilterField(context);
} }
searchController.showAdvancedFilterView(_parentContext); searchController.showAdvancedFilterView(_parentContext);
@@ -31,6 +31,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/quick_sear
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.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_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
@@ -583,7 +584,8 @@ class SearchEmailController extends BaseController
clearAllTextInputSearchForm(); clearAllTextInputSearchForm();
clearAllResultSearch(); clearAllResultSearch();
FocusScope.of(context).unfocus(); FocusScope.of(context).unfocus();
mailboxDashBoardController.searchController.disableSearch(); mailboxDashBoardController.searchController.disableAllSearchEmail();
mailboxDashBoardController.dispatchAction(SelectMailboxDefaultAction());
mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread); mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread);
SearchEmailBindings().disposeBindings(); SearchEmailBindings().disposeBindings();
} }
@@ -27,7 +27,6 @@ import 'package:tmail_ui_user/features/search/presentation/widgets/email_receive
import 'package:tmail_ui_user/features/search/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart'; import 'package:tmail_ui_user/features/search/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart'; import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart'; import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart' import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
if (dart.library.html) 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_web_builder.dart'; if (dart.library.html) 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_web_builder.dart';
@@ -425,9 +424,9 @@ class SearchEmailView extends GetWidget<SearchEmailController>
context, context,
listPresentationEmail[index], listPresentationEmail[index],
controller.selectionMode.value, controller.selectionMode.value,
SearchStatus.ACTIVE,
controller.searchQuery, controller.searchQuery,
controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id, controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id,
isSearchEmailRunning: true,
padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils), padding: SearchEmailUtils.getPaddingSearchResultList(context, _responsiveUtils),
paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils), paddingDivider: SearchEmailUtils.getPaddingDividerSearchResultList(context, _responsiveUtils),
mailboxCurrent: listPresentationEmail[index].findMailboxContain( mailboxCurrent: listPresentationEmail[index].findMailboxContain(
@@ -14,7 +14,6 @@ import 'package:model/extensions/presentation_email_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart'; import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
typedef OnPressEmailActionClick = void Function(EmailActionType, PresentationEmail); typedef OnPressEmailActionClick = void Function(EmailActionType, PresentationEmail);
typedef OnMoreActionClick = void Function(PresentationEmail, RelativeRect?); typedef OnMoreActionClick = void Function(PresentationEmail, RelativeRect?);
@@ -25,11 +24,10 @@ mixin BaseEmailItemTile {
final imagePaths = Get.find<ImagePaths>(); final imagePaths = Get.find<ImagePaths>();
Widget buildMailboxContain( Widget buildMailboxContain(
SearchStatus state, bool isSearchEmailRunning,
bool advancedSearchActivated, PresentationEmail email
PresentationEmail email
) { ) {
if (hasMailboxLabel(state, advancedSearchActivated, email)) { if (hasMailboxLabel(isSearchEmailRunning, email)) {
return Container( return Container(
margin: const EdgeInsets.only(left: 8), margin: const EdgeInsets.only(left: 8),
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
@@ -55,8 +53,9 @@ mixin BaseEmailItemTile {
} }
} }
bool isSearchEnabled(SearchStatus state, bool advancedSearchActivated, SearchQuery? query) => bool isSearchEnabled(bool isSearchEmailRunning, SearchQuery? query) {
(state == SearchStatus.ACTIVE || advancedSearchActivated) && query?.value.isNotEmpty == true; return isSearchEmailRunning && query?.value.isNotEmpty == true;
}
FontWeight buildFontForReadEmail(PresentationEmail email) => FontWeight buildFontForReadEmail(PresentationEmail email) =>
!email.hasRead ? FontWeight.w600 : FontWeight.normal; !email.hasRead ? FontWeight.w600 : FontWeight.normal;
@@ -64,8 +63,8 @@ mixin BaseEmailItemTile {
Color buildTextColorForReadEmail(PresentationEmail email) => Color buildTextColorForReadEmail(PresentationEmail email) =>
email.hasRead ? AppColor.colorContentEmail : AppColor.colorNameEmail; email.hasRead ? AppColor.colorContentEmail : AppColor.colorNameEmail;
bool hasMailboxLabel(SearchStatus state, bool advancedSearchActivated, PresentationEmail email) { bool hasMailboxLabel(bool isSearchEmailRunning, PresentationEmail email) {
return (state == SearchStatus.ACTIVE || advancedSearchActivated) && email.mailboxName.isNotEmpty; return isSearchEmailRunning && email.mailboxName.isNotEmpty;
} }
String informationSender(PresentationEmail email, PresentationMailbox? mailbox) { String informationSender(PresentationEmail email, PresentationMailbox? mailbox) {
@@ -79,11 +78,10 @@ mixin BaseEmailItemTile {
Widget buildInformationSender( Widget buildInformationSender(
PresentationEmail email, PresentationEmail email,
PresentationMailbox? mailbox, PresentationMailbox? mailbox,
SearchStatus state, bool isSearchEmailRunning,
bool advancedSearchActivated,
SearchQuery? query SearchQuery? query
) { ) {
if (isSearchEnabled(state, advancedSearchActivated, query)) { if (isSearchEnabled(isSearchEmailRunning, query)) {
return RichTextBuilder( return RichTextBuilder(
informationSender(email, mailbox), informationSender(email, mailbox),
query?.value ?? '', query?.value ?? '',
@@ -113,12 +111,11 @@ mixin BaseEmailItemTile {
} }
Widget buildEmailTitle( Widget buildEmailTitle(
PresentationEmail email, PresentationEmail email,
SearchStatus state, bool isSearchEmailRunning,
bool advancedSearchActivated, SearchQuery? query
SearchQuery? query
) { ) {
if (isSearchEnabled(state, advancedSearchActivated, query)) { if (isSearchEnabled(isSearchEmailRunning, query)) {
return RichTextBuilder( return RichTextBuilder(
email.getEmailTitle(), email.getEmailTitle(),
query?.value ?? '', query?.value ?? '',
@@ -147,12 +144,11 @@ mixin BaseEmailItemTile {
} }
Widget buildEmailPartialContent( Widget buildEmailPartialContent(
PresentationEmail email, PresentationEmail email,
SearchStatus state, bool isSearchEmailRunning,
bool advancedSearchActivated, SearchQuery? query
SearchQuery? query
) { ) {
if (isSearchEnabled(state, advancedSearchActivated, query)) { if (isSearchEnabled(isSearchEmailRunning, query)) {
return RichTextBuilder( return RichTextBuilder(
email.getPartialContent(), email.getPartialContent(),
query?.value ?? '', query?.value ?? '',
@@ -243,7 +243,6 @@ class ThreadController extends BaseController {
if (_currentMailboxId != mailbox.id) { if (_currentMailboxId != mailbox.id) {
_currentMailboxId = mailbox.id; _currentMailboxId = mailbox.id;
_resetToOriginalValue(); _resetToOriginalValue();
disableSearch();
_getAllEmail(); _getAllEmail();
} }
} else if (mailbox == null) { // disable current mailbox when search active } else if (mailbox == null) { // disable current mailbox when search active
@@ -292,9 +291,6 @@ class ThreadController extends BaseController {
action.presentationEmail, action.presentationEmail,
mailboxContain: mailboxContain); mailboxContain: mailboxContain);
mailboxDashBoardController.clearDashBoardAction(); mailboxDashBoardController.clearDashBoardAction();
} else if (action is DisableSearchEmailAction) {
closeSearchEmailAction();
mailboxDashBoardController.clearDashBoardAction();
} else if (action is StartSearchEmailAction) { } else if (action is StartSearchEmailAction) {
_searchEmail(); _searchEmail();
mailboxDashBoardController.clearDashBoardAction(); mailboxDashBoardController.clearDashBoardAction();
@@ -639,7 +635,7 @@ class ThreadController extends BaseController {
message: newFilterOption.getMessageToast(context), message: newFilterOption.getMessageToast(context),
icon: newFilterOption.getIconToast(_imagePaths)); icon: newFilterOption.getIconToast(_imagePaths));
if (isSearchActive() || searchController.isAdvancedSearchHasApply.isTrue) { if (isSearchActive() || searchController.advancedSearchIsActivated.isTrue) {
_searchEmail(filterMessageOption: _getFilterCondition()); _searchEmail(filterMessageOption: _getFilterCondition());
} else { } else {
refreshAllEmail(); refreshAllEmail();
@@ -926,34 +922,16 @@ class ThreadController extends BaseController {
bool isSearchActive() => searchController.isSearchActive(); bool isSearchActive() => searchController.isSearchActive();
bool isAdvanceSearchActive() => searchController.isAdvanceSearchActive();
bool get isAllSearchInActive => !searchController.isSearchActive() && bool get isAllSearchInActive => !searchController.isSearchActive() &&
searchController.isAdvancedSearchViewOpen.isFalse; searchController.isAdvancedSearchViewOpen.isFalse;
void enableSearch(BuildContext context) {
searchController.enableSearch();
}
void disableSearch() {
searchController.searchIsActive.value = false;
searchController.disableSearch();
}
void closeSearchEmailAction() {
disableSearch();
cancelSelectEmail();
refreshAllEmail();
}
void clearTextSearch() { void clearTextSearch() {
searchController.clearTextSearch(); searchController.clearTextSearch();
} }
void _searchEmail({UnsignedInt? limit, EmailFilterCondition? filterMessageOption}) { void _searchEmail({UnsignedInt? limit, EmailFilterCondition? filterMessageOption}) {
if (_accountId != null && searchQuery != null) { if (_accountId != null && searchQuery != null) {
searchController.searchIsActive.value = true; searchController.activateSimpleSearch();
filterMessageOption = EmailFilterCondition( filterMessageOption = EmailFilterCondition(
notKeyword: filterMessageOption?.notKeyword, notKeyword: filterMessageOption?.notKeyword,
@@ -84,22 +84,15 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
} }
Widget _buildSearchBarView(BuildContext context) { Widget _buildSearchBarView(BuildContext context) {
return Obx(() { return Container(
if (!controller.searchController.isSearchActive()) { color: Colors.white,
return Container( padding: EdgeInsets.symmetric(
color: Colors.white, horizontal: 16,
padding: EdgeInsets.symmetric( vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0),
horizontal: 16, margin: const EdgeInsets.only(bottom: !BuildUtils.isWeb ? 16 : 0),
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0), child: SearchBarView(_imagePaths,
margin: const EdgeInsets.only( hintTextSearch: AppLocalizations.of(context).search_emails,
bottom: !BuildUtils.isWeb ? 16 : 0), onOpenSearchViewAction: controller.goToSearchView));
child: SearchBarView(_imagePaths,
hintTextSearch: AppLocalizations.of(context).search_emails,
onOpenSearchViewAction: () => controller.goToSearchView()));
} else {
return const SizedBox.shrink();
}
});
} }
Widget _buildVacationNotificationMessage(BuildContext context) { Widget _buildVacationNotificationMessage(BuildContext context) {
@@ -251,7 +244,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
return Obx(() => controller.viewState.value.fold( return Obx(() => controller.viewState.value.fold(
(failure) => const SizedBox.shrink(), (failure) => const SizedBox.shrink(),
(success) { (success) {
if (controller.isSearchActive() || controller.isAdvanceSearchActive()) { if (controller.isSearchActive() || controller.searchController.advancedSearchIsActivated.isTrue) {
return success is SearchingState return success is SearchingState
? Padding(padding: const EdgeInsets.symmetric(vertical: 16), child: loadingWidget) ? Padding(padding: const EdgeInsets.symmetric(vertical: 16), child: loadingWidget)
: const SizedBox.shrink(); : const SizedBox.shrink();
@@ -318,7 +311,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
&& !controller.isLoadingMore && !controller.isLoadingMore
&& scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent && scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
) { ) {
if (controller.isSearchActive() || controller.isAdvanceSearchActive()) { if (controller.isSearchActive() || controller.searchController.advancedSearchIsActivated.isTrue) {
controller.searchMoreEmails(); controller.searchMoreEmails();
} else { } else {
controller.loadMoreEmails(); controller.loadMoreEmails();
@@ -341,13 +334,12 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
context, context,
listPresentationEmail[index], listPresentationEmail[index],
controller.mailboxDashBoardController.currentSelectMode.value, controller.mailboxDashBoardController.currentSelectMode.value,
controller.searchController.searchState.value.searchStatus,
controller.searchQuery, controller.searchQuery,
controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id, controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id,
mailboxCurrent: controller.searchController.isSearchEmailRunning mailboxCurrent: controller.searchController.isSearchEmailRunning
? listPresentationEmail[index].findMailboxContain(controller.mailboxDashBoardController.mapMailboxById) ? listPresentationEmail[index].findMailboxContain(controller.mailboxDashBoardController.mapMailboxById)
: controller.currentMailbox, : controller.currentMailbox,
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue) isSearchEmailRunning: controller.searchController.isSearchEmailRunning)
..addOnPressEmailActionClick((action, email) => ..addOnPressEmailActionClick((action, email) =>
controller.pressEmailAction( controller.pressEmailAction(
context, context,
@@ -358,22 +350,22 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
: controller.currentMailbox)) : controller.currentMailbox))
..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context) ..addOnMoreActionClick((email, position) => _responsiveUtils.isMobile(context)
? controller.openContextMenuAction(context, _contextMenuActionTile(context, email)) ? controller.openContextMenuAction(context, _contextMenuActionTile(context, email))
: controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))) : controller.openPopupMenuAction(context, position, _popupMenuActionTile(context, email)))
.build(), ).build(),
feedback: _buildFeedBackWidget(context), feedback: _buildFeedBackWidget(context),
childWhenDragging: (EmailTileBuilder( childWhenDragging: (EmailTileBuilder(
context, context,
listPresentationEmail[index], listPresentationEmail[index],
controller.mailboxDashBoardController.currentSelectMode.value, controller.mailboxDashBoardController.currentSelectMode.value,
controller.searchController.searchState.value.searchStatus,
controller.searchQuery, controller.searchQuery,
controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id, controller.mailboxDashBoardController.selectedEmail.value?.id == listPresentationEmail[index].id,
mailboxCurrent: controller.searchController.isSearchEmailRunning mailboxCurrent: controller.searchController.isSearchEmailRunning
? listPresentationEmail[index].findMailboxContain( ? listPresentationEmail[index].findMailboxContain(
controller.mailboxDashBoardController.mapMailboxById) controller.mailboxDashBoardController.mapMailboxById)
: controller.currentMailbox, : controller.currentMailbox,
advancedSearchActivated: controller.searchController.isAdvancedSearchHasApply.isTrue, isDrag: true)) isSearchEmailRunning: controller.searchController.isSearchEmailRunning,
.build(), isDrag: true)
).build(),
dragAnchorStrategy: pointerDragAnchorStrategy, dragAnchorStrategy: pointerDragAnchorStrategy,
onDragStarted: () { onDragStarted: () {
controller.calculateDragValue(listPresentationEmail[index]); controller.calculateDragValue(listPresentationEmail[index]);
@@ -1,10 +1,12 @@
import 'package:core/core.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:model/model.dart'; import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/features/thread/presentation/mixin/base_email_item_tile.dart'; import 'package:tmail_ui_user/features/thread/presentation/mixin/base_email_item_tile.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
class EmailTileBuilder with BaseEmailItemTile { class EmailTileBuilder with BaseEmailItemTile {
@@ -12,9 +14,8 @@ class EmailTileBuilder with BaseEmailItemTile {
final BuildContext _context; final BuildContext _context;
final SelectMode _selectModeAll; final SelectMode _selectModeAll;
final PresentationMailbox? mailboxCurrent; final PresentationMailbox? mailboxCurrent;
final SearchStatus _searchStatus;
final SearchQuery? _searchQuery; final SearchQuery? _searchQuery;
final bool advancedSearchActivated; final bool isSearchEmailRunning;
final EdgeInsets? padding; final EdgeInsets? padding;
final EdgeInsets? paddingDivider; final EdgeInsets? paddingDivider;
final bool isDrag; final bool isDrag;
@@ -26,11 +27,10 @@ class EmailTileBuilder with BaseEmailItemTile {
this._context, this._context,
this._presentationEmail, this._presentationEmail,
this._selectModeAll, this._selectModeAll,
this._searchStatus,
this._searchQuery, this._searchQuery,
this._isShowingEmailContent, this._isShowingEmailContent,
{ {
this.advancedSearchActivated = false, this.isSearchEmailRunning = false,
this.mailboxCurrent, this.mailboxCurrent,
this.padding, this.padding,
this.paddingDivider, this.paddingDivider,
@@ -82,11 +82,10 @@ class EmailTileBuilder with BaseEmailItemTile {
height: 9, height: 9,
fit: BoxFit.fill)), fit: BoxFit.fill)),
Expanded(child: buildInformationSender( Expanded(child: buildInformationSender(
_presentationEmail, _presentationEmail,
mailboxCurrent, mailboxCurrent,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery)),
_searchQuery)),
if (_presentationEmail.hasAttachment == true) if (_presentationEmail.hasAttachment == true)
Padding( Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
@@ -107,14 +106,12 @@ class EmailTileBuilder with BaseEmailItemTile {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Expanded(child: buildEmailTitle( Expanded(child: buildEmailTitle(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery)),
_searchQuery)),
buildMailboxContain( buildMailboxContain(
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _presentationEmail),
_presentationEmail),
if (_presentationEmail.hasStarred) if (_presentationEmail.hasStarred)
Padding( Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
@@ -126,10 +123,9 @@ class EmailTileBuilder with BaseEmailItemTile {
padding: const EdgeInsets.only(top: 6), padding: const EdgeInsets.only(top: 6),
child: Row(children: [ child: Row(children: [
Expanded(child: buildEmailPartialContent( Expanded(child: buildEmailPartialContent(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery)),
_searchQuery)),
]) ])
), ),
], ],
@@ -1,11 +1,15 @@
import 'package:core/core.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/responsive/responsive_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:model/model.dart'; import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart'; import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/features/thread/presentation/mixin/base_email_item_tile.dart'; import 'package:tmail_ui_user/features/thread/presentation/mixin/base_email_item_tile.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class EmailTileBuilder with BaseEmailItemTile { class EmailTileBuilder with BaseEmailItemTile {
@@ -14,9 +18,8 @@ class EmailTileBuilder with BaseEmailItemTile {
final BuildContext _context; final BuildContext _context;
final SelectMode _selectModeAll; final SelectMode _selectModeAll;
final PresentationMailbox? mailboxCurrent; final PresentationMailbox? mailboxCurrent;
final SearchStatus _searchStatus;
final SearchQuery? _searchQuery; final SearchQuery? _searchQuery;
final bool advancedSearchActivated; final bool isSearchEmailRunning;
final EdgeInsets? padding; final EdgeInsets? padding;
final EdgeInsets? paddingDivider; final EdgeInsets? paddingDivider;
final bool isDrag; final bool isDrag;
@@ -32,11 +35,10 @@ class EmailTileBuilder with BaseEmailItemTile {
this._context, this._context,
this._presentationEmail, this._presentationEmail,
this._selectModeAll, this._selectModeAll,
this._searchStatus,
this._searchQuery, this._searchQuery,
this._isShowingEmailContent, this._isShowingEmailContent,
{ {
this.advancedSearchActivated = false, this.isSearchEmailRunning = false,
this.mailboxCurrent, this.mailboxCurrent,
this.padding, this.padding,
this.paddingDivider, this.paddingDivider,
@@ -137,11 +139,11 @@ class EmailTileBuilder with BaseEmailItemTile {
height: 9, height: 9,
fit: BoxFit.fill)), fit: BoxFit.fill)),
Expanded(child: buildInformationSender( Expanded(child: buildInformationSender(
_presentationEmail, _presentationEmail,
mailboxCurrent, mailboxCurrent,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
if (_presentationEmail.hasAttachment == true) if (_presentationEmail.hasAttachment == true)
Padding( Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
@@ -160,14 +162,14 @@ class EmailTileBuilder with BaseEmailItemTile {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Expanded(child: buildEmailTitle( Expanded(child: buildEmailTitle(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
buildMailboxContain( buildMailboxContain(
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _presentationEmail
_presentationEmail), ),
if (_presentationEmail.hasStarred) if (_presentationEmail.hasStarred)
Padding( Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
@@ -178,10 +180,10 @@ class EmailTileBuilder with BaseEmailItemTile {
const SizedBox(height: 8), const SizedBox(height: 8),
Row(children: [ Row(children: [
Expanded(child: buildEmailPartialContent( Expanded(child: buildEmailPartialContent(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
]), ]),
]), ]),
) )
@@ -233,11 +235,11 @@ class EmailTileBuilder with BaseEmailItemTile {
height: 9, height: 9,
fit: BoxFit.fill)), fit: BoxFit.fill)),
Expanded(child: buildInformationSender( Expanded(child: buildInformationSender(
_presentationEmail, _presentationEmail,
mailboxCurrent, mailboxCurrent,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
if (isHoverItem) if (isHoverItem)
const SizedBox(width: 120) const SizedBox(width: 120)
else else
@@ -248,14 +250,14 @@ class EmailTileBuilder with BaseEmailItemTile {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Expanded(child: buildEmailTitle( Expanded(child: buildEmailTitle(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
buildMailboxContain( buildMailboxContain(
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _presentationEmail
_presentationEmail), ),
if (_presentationEmail.hasStarred) if (_presentationEmail.hasStarred)
Padding( Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
@@ -266,10 +268,10 @@ class EmailTileBuilder with BaseEmailItemTile {
const SizedBox(height: 8), const SizedBox(height: 8),
Row(children: [ Row(children: [
Expanded(child: buildEmailPartialContent( Expanded(child: buildEmailPartialContent(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
]), ]),
]), ]),
if (_selectModeAll == SelectMode.INACTIVE) if (_selectModeAll == SelectMode.INACTIVE)
@@ -354,11 +356,11 @@ class EmailTileBuilder with BaseEmailItemTile {
SizedBox( SizedBox(
width: 160, width: 160,
child: buildInformationSender( child: buildInformationSender(
_presentationEmail, _presentationEmail,
mailboxCurrent, mailboxCurrent,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)), )),
const SizedBox(width: 24), const SizedBox(width: 24),
Expanded(child: _buildSubjectAndContent()), Expanded(child: _buildSubjectAndContent()),
const SizedBox(width: 16), const SizedBox(width: 16),
@@ -476,9 +478,9 @@ class EmailTileBuilder with BaseEmailItemTile {
Widget _buildDateTimeForDesktopScreen() { Widget _buildDateTimeForDesktopScreen() {
return Row(children: [ return Row(children: [
buildMailboxContain( buildMailboxContain(
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _presentationEmail
_presentationEmail), ),
if (_presentationEmail.hasAttachment == true) if (_presentationEmail.hasAttachment == true)
Padding( Padding(
padding: const EdgeInsets.only(left: 8), padding: const EdgeInsets.only(left: 8),
@@ -508,19 +510,19 @@ class EmailTileBuilder with BaseEmailItemTile {
return Row(children: [ return Row(children: [
if (_presentationEmail.getEmailTitle().isNotEmpty) if (_presentationEmail.getEmailTitle().isNotEmpty)
Container( Container(
constraints: BoxConstraints(maxWidth: constraints.maxWidth / 2), constraints: BoxConstraints(maxWidth: constraints.maxWidth / 2),
padding: const EdgeInsets.only(right: 12), padding: const EdgeInsets.only(right: 12),
child: buildEmailTitle( child: buildEmailTitle(
_presentationEmail,
_searchStatus,
advancedSearchActivated,
_searchQuery)),
Expanded(child: Container(
child: buildEmailPartialContent(
_presentationEmail, _presentationEmail,
_searchStatus, isSearchEmailRunning,
advancedSearchActivated, _searchQuery
_searchQuery)) )),
Expanded(child: Container(
child: buildEmailPartialContent(
_presentationEmail,
isSearchEmailRunning,
_searchQuery
))
), ),
]); ]);
}); });