TF-3767 Use TupleKey to save recent search for each account

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-06-11 12:13:28 +07:00
committed by Dat H. Pham
parent 42fbb01847
commit bce9620ac5
13 changed files with 262 additions and 65 deletions
@@ -378,8 +378,16 @@ class SearchEmailController extends BaseController
}
Future<List<RecentSearch>> getAllRecentSearchAction({String pattern = ''}) async {
final accountId = mailboxDashBoardController.accountId.value;
final userName = mailboxDashBoardController.sessionCurrent?.username;
if (accountId == null || userName == null) {
logError('SearchEmailController::getAllRecentSearchAction: accountId or userName is null');
return <RecentSearch>[];
}
return _getAllRecentSearchLatestInteractor
.execute(pattern: pattern)
.execute(accountId, userName, pattern: pattern)
.then((result) => result.fold(
(failure) => <RecentSearch>[],
(success) => success is GetAllRecentSearchLatestSuccess
@@ -406,8 +414,20 @@ class SearchEmailController extends BaseController
: <PresentationEmail>[]));
}
void saveRecentSearch(RecentSearch recentSearch) {
consumeState(_saveRecentSearchInteractor.execute(recentSearch));
void saveRecentSearch(String queryString) {
final accountId = mailboxDashBoardController.accountId.value;
final userName = mailboxDashBoardController.sessionCurrent?.username;
if (accountId == null || userName == null) {
logError('SearchEmailController::_saveRecentSearch: accountId or userName is null');
return;
}
consumeState(_saveRecentSearchInteractor.execute(
accountId,
userName,
RecentSearch.now(queryString),
));
}
void _searchEmailAction(BuildContext context) {
@@ -770,7 +790,7 @@ class SearchEmailController extends BaseController
void onTextSearchSubmitted(BuildContext context, String text) {
final queryString = text.trim();
if (queryString.isNotEmpty) {
saveRecentSearch(RecentSearch.now(queryString));
saveRecentSearch(queryString);
}
_searchEmailByQueryString(context: context, queryString: queryString);
}
@@ -487,7 +487,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
onTap: () {
final query = textSearch.trim();
if (query.isNotEmpty) {
controller.saveRecentSearch(RecentSearch.now(query));
controller.saveRecentSearch(query);
controller.showAllResultSearchAction(context, query);
}
},