refactor code UI follow refactor code controller
This commit is contained in:
@@ -20,14 +20,16 @@ abstract class BaseMailboxDashBoardView extends GetWidget<MailboxDashBoardContro
|
||||
Widget buildQuickSearchFilterButton(
|
||||
BuildContext context, QuickSearchFilter filter) {
|
||||
return Obx(() {
|
||||
final isSelected = controller.searchController.checkQuickSearchFilterSelected(quickSearchFilter: filter);
|
||||
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: filter.getBackgroundColor(controller.listFilterQuickSearch)),
|
||||
color: filter.getBackgroundColor(isSelected)),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||
SvgPicture.asset(
|
||||
filter.getIcon(imagePaths, controller.listFilterQuickSearch),
|
||||
filter.getIcon(imagePaths, isSelected),
|
||||
width: 16,
|
||||
height: 16,
|
||||
fit: BoxFit.fill),
|
||||
@@ -36,7 +38,7 @@ abstract class BaseMailboxDashBoardView extends GetWidget<MailboxDashBoardContro
|
||||
filter.getTitle(context, receiveTimeType: controller.emailReceiveTimeType.value),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: filter.getTextStyle(controller.listFilterQuickSearch),
|
||||
style: filter.getTextStyle(isSelected),
|
||||
)
|
||||
]));
|
||||
});
|
||||
|
||||
@@ -72,23 +72,20 @@ class SearchController extends BaseController {
|
||||
required QuickSearchFilter quickSearchFilter,
|
||||
bool fromSuggestionBox = false,
|
||||
}) {
|
||||
final isSelected = checkQuickSearchFilterSelected(
|
||||
quickSearchFilter,
|
||||
fromSuggestionBox,
|
||||
);
|
||||
final quickSearchFilterSelected = checkQuickSearchFilterSelected(quickSearchFilter: quickSearchFilter, fromSuggestionBox: fromSuggestionBox);
|
||||
|
||||
switch (quickSearchFilter) {
|
||||
case QuickSearchFilter.hasAttachment:
|
||||
updateFilterEmail(hasAttachment: !isSelected);
|
||||
updateFilterEmail(hasAttachment: !quickSearchFilterSelected);
|
||||
return;
|
||||
case QuickSearchFilter.last7Days:
|
||||
final EmailReceiveTimeType? emailReceiveTimeType = isSelected
|
||||
final EmailReceiveTimeType? emailReceiveTimeType = quickSearchFilterSelected
|
||||
? EmailReceiveTimeType.allTime
|
||||
: EmailReceiveTimeType.last7Days;
|
||||
updateFilterEmail(emailReceiveTimeType: emailReceiveTimeType);
|
||||
return;
|
||||
case QuickSearchFilter.fromMe:
|
||||
isSelected
|
||||
quickSearchFilterSelected
|
||||
? searchEmailFilter.value.from.remove(_userProfile.email)
|
||||
: searchEmailFilter.value.from.add(_userProfile.email);
|
||||
updateFilterEmail(from: searchEmailFilter.value.from);
|
||||
@@ -179,13 +176,12 @@ class SearchController extends BaseController {
|
||||
searchInputController.text = value;
|
||||
}
|
||||
|
||||
bool checkQuickSearchFilterSelected(
|
||||
QuickSearchFilter quickSearchFilter, bool fromSuggestBox) {
|
||||
bool checkQuickSearchFilterSelected({required QuickSearchFilter quickSearchFilter, bool fromSuggestionBox = false}) {
|
||||
switch (quickSearchFilter) {
|
||||
case QuickSearchFilter.hasAttachment:
|
||||
return searchEmailFilter.value.hasAttachment == true;
|
||||
case QuickSearchFilter.last7Days:
|
||||
if (fromSuggestBox) {
|
||||
if (fromSuggestionBox) {
|
||||
return true;
|
||||
}
|
||||
return searchEmailFilter.value.emailReceiveTimeType == EmailReceiveTimeType.last7Days;
|
||||
|
||||
@@ -150,21 +150,21 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
if (controller.isSelectionEnabled()) {
|
||||
return _buildListButtonTopBarSelection(context);
|
||||
} else {
|
||||
return controller.isSearchActive()
|
||||
return controller.searchController.isSearchActive()
|
||||
? _buildListButtonTopBarSearchActive(context)
|
||||
: _buildListButtonTopBar(context);
|
||||
}
|
||||
}),
|
||||
const SizedBox(width: 16),
|
||||
Obx(() => !controller.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
|
||||
Obx(() => controller.isSearchActive()
|
||||
Obx(() => !controller.searchController.isSearchActive() ? const Spacer() : const SizedBox.shrink()),
|
||||
Obx(() => controller.searchController.isSearchActive()
|
||||
? Expanded(child: _buildSearchForm(context))
|
||||
: (SearchBarView(imagePaths)
|
||||
..hintTextSearch(AppLocalizations.of(context).search_emails)
|
||||
..maxSizeWidth(240)
|
||||
..addOnOpenSearchViewAction(() => controller.enableSearch()))
|
||||
..addOnOpenSearchViewAction(() => controller.searchController.enableSearch()))
|
||||
.build()),
|
||||
Obx(() => !controller.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
|
||||
Obx(() => !controller.searchController.isSearchActive() ? const SizedBox(width: 16) : const SizedBox.shrink()),
|
||||
Obx(() => (AvatarBuilder()
|
||||
..text(controller.userProfile.value?.getAvatarText() ?? '')
|
||||
..backgroundColor(Colors.white)
|
||||
@@ -410,19 +410,19 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
height: 45,
|
||||
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
||||
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
||||
controller: controller.searchInputController,
|
||||
controller: controller.searchController.searchInputController,
|
||||
autofocus: true,
|
||||
focusNode: controller.searchFocus,
|
||||
focusNode: controller.searchController.searchFocus,
|
||||
textInputAction: TextInputAction.done,
|
||||
onSubmitted: (keyword) {
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
controller.saveRecentSearch(RecentSearch.now(keyword));
|
||||
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
}
|
||||
controller.searchEmail(context, keyword);
|
||||
controller.searchEmail(context);
|
||||
},
|
||||
onChanged: (query) {
|
||||
log('MailboxDashBoardView::_buildSearchForm(): onChanged: $query');
|
||||
controller.onChangeTextSearch(query);
|
||||
controller.searchController.onChangeTextSearch(query);
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
border: InputBorder.none,
|
||||
@@ -444,11 +444,11 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
height: 16,
|
||||
fit: BoxFit.fill),
|
||||
onTap: () {
|
||||
final keyword = controller.searchInputController.text;
|
||||
final keyword = controller.searchController.searchInputController.text;
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
controller.saveRecentSearch(RecentSearch.now(keyword));
|
||||
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
}
|
||||
controller.searchEmail(context, keyword);
|
||||
controller.searchEmail(context);
|
||||
}),
|
||||
clearTextButton: buildIconWeb(
|
||||
icon: SvgPicture.asset(
|
||||
@@ -457,7 +457,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
height: 16,
|
||||
fit: BoxFit.fill),
|
||||
onTap: () {
|
||||
controller.clearTextSearch();
|
||||
controller.searchController.clearTextSearch();
|
||||
})
|
||||
),
|
||||
suggestionsBoxDecoration: QuickSearchSuggestionsBoxDecoration(
|
||||
@@ -482,8 +482,8 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
},
|
||||
buttonActionCallback: (filterAction) {
|
||||
if (filterAction is QuickSearchFilter) {
|
||||
controller.selectQuickSearchFilter(
|
||||
filterAction,
|
||||
controller.searchController.selectQuickSearchFilter(
|
||||
quickSearchFilter: filterAction,
|
||||
fromSuggestionBox: true);
|
||||
}
|
||||
},
|
||||
@@ -505,9 +505,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
controller.saveRecentSearch(RecentSearch.now(keyword));
|
||||
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||
}
|
||||
controller.searchEmail(context, keyword);
|
||||
controller.searchEmail(context);
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
@@ -537,17 +537,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
||||
child: loadingWidget,
|
||||
),
|
||||
fetchRecentActionCallback: (pattern) async {
|
||||
return controller.getAllRecentSearchAction(pattern);
|
||||
return controller.searchController.getAllRecentSearchAction(pattern);
|
||||
},
|
||||
itemRecentBuilder: (context, recent) {
|
||||
return RecentSearchItemTileWidget(recent);
|
||||
},
|
||||
onRecentSelected: (recent) {
|
||||
controller.searchInputController.text = recent.value;
|
||||
controller.searchEmail(context, recent.value);
|
||||
controller.searchController.searchInputController.text = recent.value;
|
||||
controller.searchEmail(context);
|
||||
},
|
||||
suggestionsCallback: (pattern) async {
|
||||
return controller.quickSearchEmailsAction(pattern);
|
||||
return controller.searchController.quickSearchEmails();
|
||||
},
|
||||
itemBuilder: (context, email) {
|
||||
return EmailQuickSearchItemTileWidget(
|
||||
|
||||
Reference in New Issue
Block a user