TF-524 Drop down list recent search

This commit is contained in:
dab246
2022-05-23 20:23:39 +07:00
committed by Dat H. Pham
parent 51cc3bd979
commit 561ea8d1ad
13 changed files with 133 additions and 8 deletions
@@ -19,6 +19,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/search_
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource_impl/search_datasource_impl.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/data/repository/search_repository_impl.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/search_repository.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/get_user_profile_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
@@ -41,6 +42,7 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.find<MoveToMailboxInteractor>(),
Get.find<DeleteEmailPermanentlyInteractor>(),
Get.find<SaveRecentSearchInteractor>(),
Get.find<GetAllRecentSearchLatestInteractor>(),
));
}
@@ -68,6 +70,7 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.lazyPut(() => MoveToMailboxInteractor(Get.find<EmailRepository>()));
Get.lazyPut(() => DeleteEmailPermanentlyInteractor(Get.find<EmailRepository>()));
Get.lazyPut(() => SaveRecentSearchInteractor(Get.find<SearchRepository>()));
Get.lazyPut(() => GetAllRecentSearchLatestInteractor(Get.find<SearchRepository>()));
}
@override
@@ -31,8 +31,10 @@ import 'package:tmail_ui_user/features/email/domain/usecases/delete_email_perman
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_all_recent_search_latest_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.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/get_user_profile_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
@@ -61,6 +63,7 @@ class MailboxDashBoardController extends ReloadableController {
final MoveToMailboxInteractor _moveToMailboxInteractor;
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
final SaveRecentSearchInteractor _saveRecentSearchInteractor;
final GetAllRecentSearchLatestInteractor _getAllRecentSearchLatestInteractor;
final scaffoldKey = GlobalKey<ScaffoldState>();
final selectedMailbox = Rxn<PresentationMailbox>();
@@ -90,6 +93,7 @@ class MailboxDashBoardController extends ReloadableController {
this._moveToMailboxInteractor,
this._deleteEmailPermanentlyInteractor,
this._saveRecentSearchInteractor,
this._getAllRecentSearchLatestInteractor,
);
@override
@@ -402,6 +406,15 @@ class MailboxDashBoardController extends ReloadableController {
consumeState(_saveRecentSearchInteractor.execute(recentSearch));
}
Future<List<RecentSearch>> getAllRecentSearchAction(String pattern) async {
return await _getAllRecentSearchLatestInteractor.execute(pattern: pattern)
.then((result) => result.fold(
(failure) => <RecentSearch>[],
(success) => success is GetAllRecentSearchLatestSuccess
? success.listRecentSearch
: <RecentSearch>[]));
}
void composeEmailAction() {
if (kIsWeb) {
if (dashBoardAction.value is! ComposeEmailAction) {
@@ -510,7 +510,7 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
color: AppColor.colorTextButtonHeaderThread,
fontWeight: FontWeight.w500))),
getRecentCallback: (pattern) async {
return [];
return controller.getAllRecentSearchAction(pattern);
},
itemRecentBuilder: (context, recent) {
return RecentSearchItemTileWidget(recent);