TF-524 Store recent search in hive database.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource/html_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/email/data/datasource_impl/email_datasource_impl.dart';
|
||||
@@ -14,8 +15,13 @@ import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_int
|
||||
import 'package:tmail_ui_user/features/email/presentation/email_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/datasource/search_datasource.dart';
|
||||
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_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';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_bindings.dart';
|
||||
|
||||
@@ -34,6 +40,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.put(MailboxDashBoardController(
|
||||
Get.find<MoveToMailboxInteractor>(),
|
||||
Get.find<DeleteEmailPermanentlyInteractor>(),
|
||||
Get.find<SaveRecentSearchInteractor>(),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -41,6 +48,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
void bindingsDataSource() {
|
||||
Get.lazyPut<EmailDataSource>(() => Get.find<EmailDataSourceImpl>());
|
||||
Get.lazyPut<HtmlDataSource>(() => Get.find<HtmlDataSourceImpl>());
|
||||
Get.lazyPut<SearchDataSource>(() => Get.find<SearchDataSourceImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -50,6 +58,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<HtmlAnalyzer>(),
|
||||
Get.find<DioClient>()
|
||||
));
|
||||
Get.lazyPut(() => SearchDataSourceImpl(Get.find<RecentSearchCacheClient>()));
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -58,11 +67,13 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut(() => RemoveEmailDraftsInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => MoveToMailboxInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => DeleteEmailPermanentlyInteractor(Get.find<EmailRepository>()));
|
||||
Get.lazyPut(() => SaveRecentSearchInteractor(Get.find<SearchRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<EmailRepository>(() => Get.find<EmailRepositoryImpl>());
|
||||
Get.lazyPut<SearchRepository>(() => Get.find<SearchRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -71,5 +82,6 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.find<EmailDataSource>(),
|
||||
Get.find<HtmlDataSource>()
|
||||
));
|
||||
Get.lazyPut(() => SearchRepositoryImpl(Get.find<SearchDataSource>()));
|
||||
}
|
||||
}
|
||||
@@ -30,10 +30,12 @@ import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.
|
||||
import 'package:tmail_ui_user/features/email/domain/usecases/delete_email_permanently_interactor.dart';
|
||||
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_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_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';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
@@ -58,6 +60,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
final MoveToMailboxInteractor _moveToMailboxInteractor;
|
||||
final DeleteEmailPermanentlyInteractor _deleteEmailPermanentlyInteractor;
|
||||
final SaveRecentSearchInteractor _saveRecentSearchInteractor;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
final selectedMailbox = Rxn<PresentationMailbox>();
|
||||
@@ -86,6 +89,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
MailboxDashBoardController(
|
||||
this._moveToMailboxInteractor,
|
||||
this._deleteEmailPermanentlyInteractor,
|
||||
this._saveRecentSearchInteractor,
|
||||
);
|
||||
|
||||
@override
|
||||
@@ -394,6 +398,10 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
return null;
|
||||
}
|
||||
|
||||
void saveRecentSearch(RecentSearch recentSearch) {
|
||||
consumeState(_saveRecentSearchInteractor.execute(recentSearch));
|
||||
}
|
||||
|
||||
void composeEmailAction() {
|
||||
if (kIsWeb) {
|
||||
if (dashBoardAction.value is! ComposeEmailAction) {
|
||||
|
||||
@@ -420,6 +420,12 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
autofocus: true,
|
||||
focusNode: controller.searchFocus,
|
||||
textInputAction: TextInputAction.done,
|
||||
onSubmitted: (keyword) {
|
||||
log('MailboxDashBoardView::_buildSearchForm(): onSubmitted: $keyword');
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
controller.saveRecentSearch(RecentSearch(keyword, DateTime.now()));
|
||||
}
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
border: InputBorder.none,
|
||||
focusedBorder: InputBorder.none,
|
||||
@@ -431,7 +437,13 @@ class MailboxDashBoardView extends GetWidget<MailboxDashBoardController> with Ne
|
||||
),
|
||||
leftButton: buildIconWeb(
|
||||
icon: SvgPicture.asset(_imagePaths.icSearchBar, width: 16, height: 16, fit: BoxFit.fill),
|
||||
onTap: () => {}),
|
||||
onTap: () {
|
||||
final keyword = controller.searchInputController.text;
|
||||
log('MailboxDashBoardView::_buildSearchForm(): buttonClick: $keyword');
|
||||
if (keyword.trim().isNotEmpty) {
|
||||
controller.saveRecentSearch(RecentSearch(keyword, DateTime.now()));
|
||||
}
|
||||
}),
|
||||
rightButton: buildIconWeb(
|
||||
icon: SvgPicture.asset(_imagePaths.icComposerClose, width: 18, height: 18, fit: BoxFit.fill),
|
||||
onTap: () {
|
||||
|
||||
Reference in New Issue
Block a user