diff --git a/lib/features/home/presentation/home_bindings.dart b/lib/features/home/presentation/home_bindings.dart index 97a11769b..1accfca59 100644 --- a/lib/features/home/presentation/home_bindings.dart +++ b/lib/features/home/presentation/home_bindings.dart @@ -1,6 +1,7 @@ import 'package:core/core.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; +import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/cleanup/data/datasource/cleanup_datasource.dart'; import 'package:tmail_ui_user/features/cleanup/data/datasource_impl/cleanup_datasource_impl.dart'; import 'package:tmail_ui_user/features/cleanup/data/local/recent_search_cache_manager.dart'; @@ -24,6 +25,8 @@ 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/delete_credential_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'; @@ -41,6 +44,9 @@ class HomeBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), + Get.find(), + Get.find(), + Get.find(), )); } @@ -81,6 +87,7 @@ class HomeBindings extends BaseBindings { )); Get.lazyPut(() => CleanupEmailCacheInteractor(Get.find())); Get.lazyPut(() => CleanupRecentSearchCacheInteractor(Get.find())); + Get.lazyPut(() => DeleteAuthorityOidcInteractor(Get.find())); } @override diff --git a/lib/features/home/presentation/home_controller.dart b/lib/features/home/presentation/home_controller.dart index 9975f6b13..efef61e0b 100644 --- a/lib/features/home/presentation/home_controller.dart +++ b/lib/features/home/presentation/home_controller.dart @@ -6,6 +6,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:model/account/account.dart'; import 'package:model/oidc/token_oidc.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; +import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/email_cleanup_rule.dart'; import 'package:tmail_ui_user/features/cleanup/domain/model/recent_search_cleanup_rule.dart'; @@ -14,6 +15,8 @@ import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_se import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_state.dart'; +import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart'; +import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -26,6 +29,9 @@ class HomeController extends BaseController { final CleanupEmailCacheInteractor _cleanupEmailCacheInteractor; final EmailReceiveManager _emailReceiveManager; final CleanupRecentSearchCacheInteractor _cleanupRecentSearchCacheInteractor; + final DeleteCredentialInteractor _deleteCredentialInteractor; + final CachingManager _cachingManager; + final DeleteAuthorityOidcInteractor _deleteAuthorityOidcInteractor; HomeController( this._getAuthenticatedAccountInteractor, @@ -34,6 +40,9 @@ class HomeController extends BaseController { this._cleanupEmailCacheInteractor, this._emailReceiveManager, this._cleanupRecentSearchCacheInteractor, + this._deleteCredentialInteractor, + this._cachingManager, + this._deleteAuthorityOidcInteractor, ); Account? currentAccount; @@ -100,12 +109,12 @@ class HomeController extends BaseController { @override void onError(error) { - _goToLogin(); + _clearAllCacheAndCredential(); } - void _handleFailureViewState(Failure failure) { + void _handleFailureViewState(Failure failure) async { logError('HomeController::_handleFailureViewState(): ${failure.toString()}'); - _goToLogin(); + _clearAllCacheAndCredential(); } void _handleSuccessViewState(Success success) { @@ -117,6 +126,14 @@ class HomeController extends BaseController { } } + void _clearAllCacheAndCredential() async { + await Future.wait([ + _deleteCredentialInteractor.execute(), + _deleteAuthorityOidcInteractor.execute(), + _cachingManager.clearAll() + ]).then((value) => _goToLogin()); + } + void _goToSessionWithTokenOidc(GetStoredTokenOidcSuccess storedTokenOidcSuccess) { _dynamicUrlInterceptors.changeBaseUrl(storedTokenOidcSuccess.baseUrl.toString()); _authorizationInterceptors.setTokenAndAuthorityOidc(