TF-524 Drop down list recent search
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/core/extensions/date_time_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
|
||||
extension ListRecentSearchExtension on List<RecentSearch> {
|
||||
|
||||
void sortByCreationDate() {
|
||||
sort((recentSearch1, recentSearch2) {
|
||||
return recentSearch1.creationDate.compareToSort(recentSearch1.creationDate, false);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -3,4 +3,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_sea
|
||||
|
||||
abstract class SearchRepository {
|
||||
Future<void> saveRecentSearch(RecentSearch recentSearch);
|
||||
|
||||
Future<List<RecentSearch>> getAllRecentSearchLatest({int? limit, String? pattern});
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import 'package:core/core.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
|
||||
|
||||
class GetAllRecentSearchLatestSuccess extends UIState {
|
||||
|
||||
final List<RecentSearch> listRecentSearch;
|
||||
|
||||
GetAllRecentSearchLatestSuccess(this.listRecentSearch);
|
||||
|
||||
@override
|
||||
List<Object> get props => [listRecentSearch];
|
||||
}
|
||||
|
||||
class GetAllRecentSearchLatestFailure extends FeatureFailure {
|
||||
final dynamic exception;
|
||||
|
||||
GetAllRecentSearchLatestFailure(this.exception);
|
||||
|
||||
@override
|
||||
List<Object> get props => [exception];
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
import 'dart:core';
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/repository/search_repository.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_all_recent_search_latest_state.dart';
|
||||
|
||||
class GetAllRecentSearchLatestInteractor {
|
||||
final SearchRepository searchRepository;
|
||||
|
||||
GetAllRecentSearchLatestInteractor(this.searchRepository);
|
||||
|
||||
Future<Either<Failure, Success>> execute({int? limit, String? pattern}) async {
|
||||
try {
|
||||
final listRecent = await searchRepository.getAllRecentSearchLatest(limit: limit, pattern: pattern);
|
||||
log('GetAllRecentSearchLatestInteractor::execute(): listRecent: ${listRecent.length}');
|
||||
return Right(GetAllRecentSearchLatestSuccess(listRecent));
|
||||
} catch (exception) {
|
||||
return Left(GetAllRecentSearchLatestFailure(exception));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user