Fix the login screen freezes when pasting the link in the browser address bar

(cherry picked from commit b1413bc2361e0dde1474ec87c4568fc63703961a)
This commit is contained in:
dab246
2023-08-28 18:23:37 +07:00
committed by Dat Vu
parent fe310b666a
commit a26d2e60a0
8 changed files with 22 additions and 43 deletions
@@ -55,6 +55,8 @@ class LoginBindings extends BaseBindings {
@override
void bindingsController() {
Get.lazyPut(() => LoginController(
Get.find<GetAuthenticatedAccountInteractor>(),
Get.find<UpdateAuthenticationAccountInteractor>(),
Get.find<AuthenticationInteractor>(),
Get.find<DynamicUrlInterceptors>(),
Get.find<CheckOIDCIsAvailableInteractor>(),
@@ -68,7 +70,6 @@ class LoginBindings extends BaseBindings {
Get.find<GetAllRecentLoginUrlOnMobileInteractor>(),
Get.find<SaveLoginUsernameOnMobileInteractor>(),
Get.find<GetAllRecentLoginUsernameOnMobileInteractor>(),
Get.find<GetAuthenticatedAccountInteractor>(),
));
}
@@ -8,13 +8,14 @@ import 'package:dartz/dartz.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:model/account/password.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/request/oidc_request.dart';
import 'package:model/oidc/response/oidc_response.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
import 'package:tmail_ui_user/features/login/data/network/oidc_error.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
import 'package:tmail_ui_user/features/login/domain/model/login_constants.dart';
@@ -44,14 +45,17 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_oidc_con
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_mobile_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.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/app_routes.dart';
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/routes/route_utils.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
import 'package:universal_html/html.dart' as html;
class LoginController extends BaseController {
class LoginController extends ReloadableController {
final AuthenticationInteractor _authenticationInteractor;
final DynamicUrlInterceptors _dynamicUrlInterceptors;
@@ -66,13 +70,14 @@ class LoginController extends BaseController {
final GetAllRecentLoginUrlOnMobileInteractor _getAllRecentLoginUrlOnMobileInteractor;
final SaveLoginUsernameOnMobileInteractor _saveLoginUsernameOnMobileInteractor;
final GetAllRecentLoginUsernameOnMobileInteractor _getAllRecentLoginUsernameOnMobileInteractor;
final GetAuthenticatedAccountInteractor _getAuthenticatedAccountInteractor;
final TextEditingController urlInputController = TextEditingController();
final TextEditingController usernameInputController = TextEditingController();
final FocusNode passFocusNode = FocusNode();
LoginController(
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
this._authenticationInteractor,
this._dynamicUrlInterceptors,
this._checkOIDCIsAvailableInteractor,
@@ -86,7 +91,9 @@ class LoginController extends BaseController {
this._getAllRecentLoginUrlOnMobileInteractor,
this._saveLoginUsernameOnMobileInteractor,
this._getAllRecentLoginUsernameOnMobileInteractor,
this._getAuthenticatedAccountInteractor,
) : super(
getAuthenticatedAccountInteractor,
updateAuthenticationAccountInteractor
);
final loginFormType = LoginFormType.baseUrlForm.obs;
@@ -132,7 +139,7 @@ class LoginController extends BaseController {
void handleFailureViewState(Failure failure) {
super.handleFailureViewState(failure);
if (failure is GetAuthenticationInfoFailure) {
_getAuthenticatedAccountAction();
getAuthenticatedAccountAction();
} else if (failure is CheckOIDCIsAvailableFailure ||
failure is GetStoredOidcConfigurationFailure ||
failure is GetOIDCIsAvailableFailure ||
@@ -173,6 +180,14 @@ class LoginController extends BaseController {
}
}
@override
void handleReloaded(Session session) {
popAndPush(
RouteUtils.generateNavigationRoute(AppRoutes.dashboard, NavigationRouter()),
arguments: session
);
}
void _getAuthenticationInfo() {
consumeState(_getAuthenticationInfoInteractor.execute());
}
@@ -181,10 +196,6 @@ class LoginController extends BaseController {
consumeState(_getStoredOidcConfigurationInteractor.execute());
}
void _getAuthenticatedAccountAction() {
consumeState(_getAuthenticatedAccountInteractor.execute());
}
void handleNextInUrlInputFormPress() {
_saveRecentLoginUrl();
_checkOIDCIsAvailable();
@@ -39,7 +39,6 @@ import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
@@ -92,7 +91,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_manager.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_manager.dart';
@@ -161,8 +159,6 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.find<GetSpamMailboxCachedInteractor>()));
Get.put(MailboxDashBoardController(
Get.find<LogoutOidcInteractor>(),
Get.find<DeleteAuthorityOidcInteractor>(),
Get.find<GetAuthenticatedAccountInteractor>(),
Get.find<UpdateAuthenticationAccountInteractor>(),
Get.find<MoveToMailboxInteractor>(),
@@ -279,9 +275,6 @@ class MailboxDashBoardBindings extends BaseBindings {
Get.find<MailboxRepository>(),
Get.find<EmailRepository>())
);
Get.lazyPut(() => DeleteAuthorityOidcInteractor(
Get.find<AuthenticationOIDCRepository>(),
Get.find<CredentialRepository>()));
Get.lazyPut(() => GetStoredTokenOidcInteractor(
Get.find<AuthenticationOIDCRepository>(),
Get.find<CredentialRepository>(),
@@ -49,7 +49,6 @@ import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_int
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
@@ -80,7 +79,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
@@ -221,8 +219,6 @@ class MailboxDashBoardController extends ReloadableController {
final _fcmService = FcmService.instance;
MailboxDashBoardController(
LogoutOidcInteractor logoutOidcInteractor,
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
this._moveToMailboxInteractor,
@@ -14,7 +14,6 @@ import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
@@ -24,7 +23,6 @@ import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manag
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
import 'package:tmail_ui_user/features/manage_account/data/repository/manage_account_repository_impl.dart';
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/manage_account_menu_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings/settings_bindings.dart';
@@ -45,8 +43,6 @@ class ManageAccountDashBoardBindings extends BaseBindings {
@override
void bindingsController() {
Get.put(ManageAccountDashBoardController(
Get.find<LogoutOidcInteractor>(),
Get.find<DeleteAuthorityOidcInteractor>(),
Get.find<GetAuthenticatedAccountInteractor>(),
Get.find<UpdateAuthenticationAccountInteractor>()
));
@@ -78,9 +74,6 @@ class ManageAccountDashBoardBindings extends BaseBindings {
@override
void bindingsInteractor() {
Get.lazyPut(() => DeleteAuthorityOidcInteractor(
Get.find<AuthenticationOIDCRepository>(),
Get.find<CredentialRepository>()));
Get.lazyPut(() => GetStoredTokenOidcInteractor(
Get.find<AuthenticationOIDCRepository>(),
Get.find<CredentialRepository>(),
@@ -13,14 +13,12 @@ import 'package:package_info_plus/package_info_plus.dart';
import 'package:rule_filter/rule_filter/capability_rule_filter.dart';
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/action/dashboard_setting_action.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_bindings.dart';
@@ -59,8 +57,6 @@ class ManageAccountDashBoardController extends ReloadableController {
Session? sessionCurrent;
ManageAccountDashBoardController(
LogoutOidcInteractor logoutOidcInteractor,
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor
) : super(
@@ -8,10 +8,8 @@ import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/session/domain/extensions/session_extensions.dart';
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
import 'package:tmail_ui_user/features/session/domain/state/get_stored_session_state.dart';
@@ -31,8 +29,6 @@ class SessionController extends ReloadableController {
final GetStoredSessionInteractor _getStoredSessionInteractor;
SessionController(
LogoutOidcInteractor logoutOidcInteractor,
DeleteAuthorityOidcInteractor deleteAuthorityOidcInteractor,
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
this._getSessionInteractor,
@@ -12,12 +12,10 @@ import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
import 'package:tmail_ui_user/features/session/domain/repository/session_repository.dart';
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
import 'package:tmail_ui_user/features/session/domain/usecases/get_stored_session_interactor.dart';
@@ -29,8 +27,6 @@ class SessionPageBindings extends BaseBindings {
@override
void bindingsController() {
Get.lazyPut(() => SessionController(
Get.find<LogoutOidcInteractor>(),
Get.find<DeleteAuthorityOidcInteractor>(),
Get.find<GetAuthenticatedAccountInteractor>(),
Get.find<UpdateAuthenticationAccountInteractor>(),
Get.find<GetSessionInteractor>(),
@@ -58,9 +54,6 @@ class SessionPageBindings extends BaseBindings {
@override
void bindingsInteractor() {
Get.lazyPut(() => DeleteAuthorityOidcInteractor(
Get.find<AuthenticationOIDCRepository>(),
Get.find<CredentialRepository>()));
Get.lazyPut(() => GetStoredTokenOidcInteractor(
Get.find<AuthenticationOIDCRepository>(),
Get.find<CredentialRepository>(),