TF-1068 Implement make recent list for input of URL

This commit is contained in:
dab246
2022-10-21 12:10:00 +07:00
committed by Dat H. Pham
parent 87839351f2
commit 2a39904b35
14 changed files with 225 additions and 55 deletions
@@ -0,0 +1,12 @@
import 'package:jmap_dart_client/jmap/core/extensions/date_time_extension.dart';
import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart';
extension ListRecentLoginUrlExtension on List<RecentLoginUrl> {
void sortByCreationDate() {
sort((recentUrl1, recentUrl2) {
return recentUrl1.creationDate.compareToSort(recentUrl2.creationDate, false);
});
}
}
@@ -2,4 +2,6 @@ import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'
abstract class LoginUrlRepository {
Future<void> saveRecentLoginUrl(RecentLoginUrl recentLoginUrl);
Future<List<RecentLoginUrl>> getAllRecentLoginUrlLatest({int? limit, String? pattern});
}
@@ -0,0 +1,22 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart';
class GetAllRecentLoginUrlLatestSuccess extends UIState {
final List<RecentLoginUrl> listRecentLoginUrl;
GetAllRecentLoginUrlLatestSuccess(this.listRecentLoginUrl);
@override
List<Object> get props => [listRecentLoginUrl];
}
class GetAllRecentLoginUrlLatestFailure extends FeatureFailure {
final dynamic exception;
GetAllRecentLoginUrlLatestFailure(this.exception);
@override
List<Object> get props => [exception];
}
@@ -0,0 +1,22 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:tmail_ui_user/features/login/domain/repository/login_url_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/get_all_recent_login_url_latest_state.dart';
class GetAllRecentLoginUrlOnMobileInteractor {
final LoginUrlRepository _loginUrlRepository;
GetAllRecentLoginUrlOnMobileInteractor(this._loginUrlRepository);
Future<Either<Failure, Success>> execute({int? limit, String? pattern}) async {
try{
final listRecentUrl = await _loginUrlRepository.getAllRecentLoginUrlLatest(
limit: limit,
pattern: pattern);
return Right(GetAllRecentLoginUrlLatestSuccess(listRecentUrl));
} catch(e) {
return Left(GetAllRecentLoginUrlLatestFailure(e));
}
}
}