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
@@ -0,0 +1,62 @@
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:tmail_ui_user/features/login/domain/model/company_server_login_info.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/remove_company_server_login_info_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/save_company_server_login_info_interactor.dart';
import 'package:tmail_ui_user/features/login/presentation/login_controller.dart';
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
extension HandleCompanyServerLoginInfoExtension on LoginController {
bool get isDnsLookupFormOnMobile =>
PlatformInfo.isMobile &&
loginFormType.value == LoginFormType.dnsLookupForm;
bool hasPreviousCompanyServerLogin(LoginArguments arguments) {
return PlatformInfo.isMobile &&
arguments.loginFormType == LoginFormType.dnsLookupForm &&
arguments.loginInfo != null;
}
bool isCompanyServerLoginFlow(LoginArguments arguments) {
return PlatformInfo.isMobile &&
arguments.loginFormType == LoginFormType.dnsLookupForm;
}
void saveCompanyServerLoginInfo(String username) {
log('$runtimeType::saveCompanyServerLoginInfo: Username = $username');
saveLoginInfoInteractor = getBinding<SaveCompanyServerLoginInfoInteractor>();
if (saveLoginInfoInteractor != null) {
consumeState(
saveLoginInfoInteractor!.execute(
CompanyServerLoginInfo(email: username),
),
);
}
}
void autoFillPreviousCompanyServerMail(CompanyServerLoginInfo loginInfo) {
final userEmail = loginInfo.email;
onUsernameChange(userEmail);
usernameInputController.text = userEmail;
}
Future<void> autoFillCompanyServerMail() async {
final listUsername = await getAllRecentLoginUsernameAction();
if (listUsername.isNotEmpty) {
final username = listUsername.first.username;
onUsernameChange(username);
usernameInputController.text = username;
}
}
void removeCompanyServerLoginInfo() {
removeLoginInfoInteractor =
getBinding<RemoveCompanyServerLoginInfoInteractor>();
if (removeLoginInfoInteractor != null) {
consumeState(removeLoginInfoInteractor!.execute());
}
}
}