From a26d2e60a0df618eafe5804ec463ebc587c692f5 Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 28 Aug 2023 18:23:37 +0700 Subject: [PATCH] Fix the login screen freezes when pasting the link in the browser address bar (cherry picked from commit b1413bc2361e0dde1474ec87c4568fc63703961a) --- .../login/presentation/login_bindings.dart | 3 +- .../login/presentation/login_controller.dart | 29 +++++++++++++------ .../bindings/mailbox_dashboard_bindings.dart | 7 ----- .../mailbox_dashboard_controller.dart | 4 --- .../manage_account_dashboard_bindings.dart | 7 ----- .../manage_account_dashboard_controller.dart | 4 --- .../presentation/session_controller.dart | 4 --- .../presentation/session_page_bindings.dart | 7 ----- 8 files changed, 22 insertions(+), 43 deletions(-) diff --git a/lib/features/login/presentation/login_bindings.dart b/lib/features/login/presentation/login_bindings.dart index c8d6678ab..7b32bfed1 100644 --- a/lib/features/login/presentation/login_bindings.dart +++ b/lib/features/login/presentation/login_bindings.dart @@ -55,6 +55,8 @@ class LoginBindings extends BaseBindings { @override void bindingsController() { Get.lazyPut(() => LoginController( + Get.find(), + Get.find(), Get.find(), Get.find(), Get.find(), @@ -68,7 +70,6 @@ class LoginBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), - Get.find(), )); } diff --git a/lib/features/login/presentation/login_controller.dart b/lib/features/login/presentation/login_controller.dart index 069424142..69d42126e 100644 --- a/lib/features/login/presentation/login_controller.dart +++ b/lib/features/login/presentation/login_controller.dart @@ -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(); diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index 507832ff4..e980e8546 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -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())); Get.put(MailboxDashBoardController( - Get.find(), - Get.find(), Get.find(), Get.find(), Get.find(), @@ -279,9 +275,6 @@ class MailboxDashBoardBindings extends BaseBindings { Get.find(), Get.find()) ); - Get.lazyPut(() => DeleteAuthorityOidcInteractor( - Get.find(), - Get.find())); Get.lazyPut(() => GetStoredTokenOidcInteractor( Get.find(), Get.find(), diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index f5a69ae70..c7ca8ed4a 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -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, diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart index 84a1eba34..16dd74b4a 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart @@ -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(), - Get.find(), Get.find(), Get.find() )); @@ -78,9 +74,6 @@ class ManageAccountDashBoardBindings extends BaseBindings { @override void bindingsInteractor() { - Get.lazyPut(() => DeleteAuthorityOidcInteractor( - Get.find(), - Get.find())); Get.lazyPut(() => GetStoredTokenOidcInteractor( Get.find(), Get.find(), diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index 77bc5ad5b..d2fc46980 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -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( diff --git a/lib/features/session/presentation/session_controller.dart b/lib/features/session/presentation/session_controller.dart index 9bbe54dc0..22aeb1296 100644 --- a/lib/features/session/presentation/session_controller.dart +++ b/lib/features/session/presentation/session_controller.dart @@ -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, diff --git a/lib/features/session/presentation/session_page_bindings.dart b/lib/features/session/presentation/session_page_bindings.dart index a59b012a9..aff4881a7 100644 --- a/lib/features/session/presentation/session_page_bindings.dart +++ b/lib/features/session/presentation/session_page_bindings.dart @@ -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(), - Get.find(), Get.find(), Get.find(), Get.find(), @@ -58,9 +54,6 @@ class SessionPageBindings extends BaseBindings { @override void bindingsInteractor() { - Get.lazyPut(() => DeleteAuthorityOidcInteractor( - Get.find(), - Get.find())); Get.lazyPut(() => GetStoredTokenOidcInteractor( Get.find(), Get.find(),