TF-1068 add recent url

This commit is contained in:
sherlockvn
2022-10-20 14:17:20 +07:00
committed by Dat H. Pham
parent 69e7715734
commit 36e3634c71
14 changed files with 312 additions and 0 deletions
@@ -0,0 +1,14 @@
import 'package:equatable/equatable.dart';
class RecentLoginUrl with EquatableMixin {
final Uri url;
final DateTime creationDate;
RecentLoginUrl(this.url, this.creationDate);
factory RecentLoginUrl.now(Uri url) =>
RecentLoginUrl(url, DateTime.now());
@override
List<Object?> get props => [url, creationDate];
}
@@ -0,0 +1,5 @@
import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart';
abstract class LoginUrlRepository {
Future<void> saveRecentLoginUrl(RecentLoginUrl recentLoginUrl);
}
@@ -0,0 +1,20 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class SaveRecentLoginUrlSuccess extends UIState {
SaveRecentLoginUrlSuccess();
@override
List<Object> get props => [];
}
class SaveRecentLoginUrlFailed extends FeatureFailure {
final dynamic exception;
SaveRecentLoginUrlFailed(this.exception);
@override
List<Object?> get props => [exception];
}
@@ -0,0 +1,21 @@
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/model/recent_login_url.dart';
import 'package:tmail_ui_user/features/login/domain/repository/login_url_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/save_recent_login_url_state.dart';
class SaveLoginUrlOnMobileInteractor {
final LoginUrlRepository loginUrlRepository;
SaveLoginUrlOnMobileInteractor(this.loginUrlRepository);
Stream<Either<Failure, Success>> execute(RecentLoginUrl recentLoginUrl) async* {
try{
await loginUrlRepository.saveRecentLoginUrl(recentLoginUrl);
yield Right(SaveRecentLoginUrlSuccess());
} catch(e) {
yield Left(SaveRecentLoginUrlFailed(e));
}
}
}