TF-4186 Implement remember choose organisation server

This commit is contained in:
dab246
2025-12-08 15:42:07 +07:00
committed by Dat H. Pham
parent 0bbcfd0f75
commit c87d3229ce
15 changed files with 317 additions and 45 deletions
@@ -6,14 +6,25 @@ class GettingCompanyServerLoginInfo extends LoadingState {}
class GetCompanyServerLoginInfoSuccess extends UIState {
final CompanyServerLoginInfo serverLoginInfo;
final bool popAllRoute;
GetCompanyServerLoginInfoSuccess(this.serverLoginInfo);
GetCompanyServerLoginInfoSuccess(
this.serverLoginInfo, {
this.popAllRoute = true,
});
@override
List<Object> get props => [serverLoginInfo];
List<Object> get props => [serverLoginInfo, popAllRoute];
}
class GetCompanyServerLoginInfoFailure extends FeatureFailure {
GetCompanyServerLoginInfoFailure(dynamic exception)
: super(exception: exception);
final bool popAllRoute;
GetCompanyServerLoginInfoFailure(
dynamic exception, {
this.popAllRoute = true,
}) : super(exception: exception);
@override
List<Object> get props => [exception, popAllRoute];
}
@@ -0,0 +1,11 @@
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
class RemovingCompanyServerLoginInfo extends LoadingState {}
class RemoveCompanyServerLoginInfoSuccess extends UIState {}
class RemoveCompanyServerLoginInfoFailure extends FeatureFailure {
RemoveCompanyServerLoginInfoFailure(dynamic exception)
: super(exception: exception);
}
@@ -11,14 +11,20 @@ class GetCompanyServerLoginInfoInteractor {
GetCompanyServerLoginInfoInteractor(this._serverLoginRepository);
Stream<Either<Failure, Success>> execute() async* {
Stream<Either<Failure, Success>> execute({bool popAllRoute = true}) async* {
try {
yield Right(GettingCompanyServerLoginInfo());
final serverLoginInfo =
await _serverLoginRepository.getCompanyServerLoginInfo();
yield Right(GetCompanyServerLoginInfoSuccess(serverLoginInfo));
yield Right(GetCompanyServerLoginInfoSuccess(
serverLoginInfo,
popAllRoute: popAllRoute,
));
} catch (exception) {
yield Left(GetCompanyServerLoginInfoFailure(exception));
yield Left(GetCompanyServerLoginInfoFailure(
exception,
popAllRoute: popAllRoute,
));
}
}
}
@@ -0,0 +1,23 @@
import 'dart:core';
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/company_server_login_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/remove_company_server_login_info_state.dart';
class RemoveCompanyServerLoginInfoInteractor {
final CompanyServerLoginRepository _serverLoginRepository;
RemoveCompanyServerLoginInfoInteractor(this._serverLoginRepository);
Stream<Either<Failure, Success>> execute() async* {
try {
yield Right(RemovingCompanyServerLoginInfo());
await _serverLoginRepository.removeCompanyServerLoginInfo();
yield Right(RemoveCompanyServerLoginInfoSuccess());
} catch (exception) {
yield Left(RemoveCompanyServerLoginInfoFailure(exception));
}
}
}