From 34f99f38e578df54d44e240c863af49c8221913a Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 7 Sep 2022 11:54:53 +0700 Subject: [PATCH] TF-886 Sync delete token oidc and clear cache --- .../base/reloadable/reloadable_controller.dart | 1 - lib/features/caching/caching_manager.dart | 10 ---------- lib/features/email/presentation/email_bindings.dart | 7 ------- lib/features/home/presentation/home_bindings.dart | 4 +++- .../datasource/authentication_oidc_datasource.dart | 2 ++ .../authentication_oidc_datasource_impl.dart | 5 +++++ .../login/data/local/token_oidc_cache_manager.dart | 4 ++++ .../authentication_oidc_repository_impl.dart | 5 +++++ .../repository/authentication_oidc_repository.dart | 2 ++ .../usecases/delete_authority_oidc_interactor.dart | 10 ++++++++-- lib/features/login/presentation/login_bindings.dart | 7 ------- .../mailbox/presentation/mailbox_bindings.dart | 8 -------- .../bindings/mailbox_dashboard_bindings.dart | 5 +++-- .../manage_account_dashboard_bindings.dart | 5 +++-- .../session/presentation/session_page_bindings.dart | 5 ++++- lib/main/bindings/credential/credential_bindings.dart | 2 ++ lib/main/bindings/local/local_bindings.dart | 2 -- lib/main/bindings/session/session_bindings.dart | 3 --- 18 files changed, 41 insertions(+), 46 deletions(-) diff --git a/lib/features/base/reloadable/reloadable_controller.dart b/lib/features/base/reloadable/reloadable_controller.dart index adeccf533..ba0d98db2 100644 --- a/lib/features/base/reloadable/reloadable_controller.dart +++ b/lib/features/base/reloadable/reloadable_controller.dart @@ -153,7 +153,6 @@ abstract class ReloadableController extends BaseController { void handleLogoutOidcSuccess(LogoutOidcSuccess success) async { log('ReloadableController::handleLogoutOidcSuccess(): $success'); await Future.wait([ - _deleteCredentialInteractor.execute(), _deleteAuthorityOidcInteractor.execute(), _cachingManager.clearAll(), _languageCacheManager.removeLanguage(), diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart index aa7380136..e3b09917f 100644 --- a/lib/features/caching/caching_manager.dart +++ b/lib/features/caching/caching_manager.dart @@ -1,13 +1,11 @@ import 'package:flutter/foundation.dart'; import 'package:tmail_ui_user/features/caching/account_cache_client.dart'; -import 'package:tmail_ui_user/features/caching/authentication_info_cache_client.dart'; import 'package:tmail_ui_user/features/caching/email_cache_client.dart'; import 'package:tmail_ui_user/features/caching/encryption_key_cache_client.dart'; import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart'; import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart'; import 'package:tmail_ui_user/features/caching/state_cache_client.dart'; -import 'package:tmail_ui_user/features/caching/token_oidc_cache_client.dart'; class CachingManager { @@ -15,20 +13,16 @@ class CachingManager { final StateCacheClient _stateCacheClient; final EmailCacheClient _emailCacheClient; final RecentSearchCacheClient _recentSearchCacheClient; - final TokenOidcCacheClient _tokenOidcCacheClient; final AccountCacheClient _accountCacheClient; final EncryptionKeyCacheClient _encryptionKeyCacheClient; - final AuthenticationInfoCacheClient _authenticationInfoCacheClient; CachingManager( this._mailboxCacheClient, this._stateCacheClient, this._emailCacheClient, this._recentSearchCacheClient, - this._tokenOidcCacheClient, this._accountCacheClient, this._encryptionKeyCacheClient, - this._authenticationInfoCacheClient, ); Future clearAll() async { @@ -38,10 +32,8 @@ class CachingManager { _mailboxCacheClient.clearAllData(), _emailCacheClient.clearAllData(), _recentSearchCacheClient.clearAllData(), - _tokenOidcCacheClient.clearAllData(), _accountCacheClient.clearAllData(), _encryptionKeyCacheClient.clearAllData(), - _authenticationInfoCacheClient.clearAllData(), ]); } else { await Future.wait([ @@ -49,10 +41,8 @@ class CachingManager { _mailboxCacheClient.deleteBox(), _emailCacheClient.deleteBox(), _recentSearchCacheClient.deleteBox(), - _tokenOidcCacheClient.deleteBox(), _accountCacheClient.deleteBox(), _encryptionKeyCacheClient.deleteBox(), - _authenticationInfoCacheClient.deleteBox(), ]); } } diff --git a/lib/features/email/presentation/email_bindings.dart b/lib/features/email/presentation/email_bindings.dart index a538b4ccf..eeddd4bd9 100644 --- a/lib/features/email/presentation/email_bindings.dart +++ b/lib/features/email/presentation/email_bindings.dart @@ -1,6 +1,5 @@ import 'package:core/core.dart'; import 'package:get/get.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/caching/state_cache_client.dart'; import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart'; @@ -24,7 +23,6 @@ import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart'; import 'package:tmail_ui_user/features/login/data/datasource_impl/hive_account_datasource_impl.dart'; import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.dart'; -import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; @@ -32,7 +30,6 @@ import 'package:tmail_ui_user/features/login/data/network/config/authorization_i import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/repository/account_repository_impl.dart'; import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart'; -import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart'; 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'; @@ -131,7 +128,6 @@ class EmailBindings extends BaseBindings { void bindingsRepository() { Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); - Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); } @@ -150,9 +146,6 @@ class EmailBindings extends BaseBindings { Get.find(), Get.find() )); - Get.lazyPut(() => CredentialRepositoryImpl( - Get.find(), - Get.find(),)); Get.lazyPut(() => AccountRepositoryImpl(Get.find())); Get.lazyPut(() => AuthenticationOIDCRepositoryImpl(Get.find())); } diff --git a/lib/features/home/presentation/home_bindings.dart b/lib/features/home/presentation/home_bindings.dart index be27a3abb..7191b1ed5 100644 --- a/lib/features/home/presentation/home_bindings.dart +++ b/lib/features/home/presentation/home_bindings.dart @@ -91,7 +91,9 @@ class HomeBindings extends BaseBindings { )); Get.lazyPut(() => CleanupEmailCacheInteractor(Get.find())); Get.lazyPut(() => CleanupRecentSearchCacheInteractor(Get.find())); - Get.lazyPut(() => DeleteAuthorityOidcInteractor(Get.find())); + Get.lazyPut(() => DeleteAuthorityOidcInteractor( + Get.find(), + Get.find())); Get.lazyPut(() => CheckOIDCIsAvailableInteractor(Get.find())); } diff --git a/lib/features/login/data/datasource/authentication_oidc_datasource.dart b/lib/features/login/data/datasource/authentication_oidc_datasource.dart index 1711b3015..fc198603d 100644 --- a/lib/features/login/data/datasource/authentication_oidc_datasource.dart +++ b/lib/features/login/data/datasource/authentication_oidc_datasource.dart @@ -10,6 +10,8 @@ abstract class AuthenticationOIDCDataSource { Future persistTokenOIDC(TokenOIDC tokenOidc); + Future deleteTokenOIDC(); + Future getStoredTokenOIDC(String tokenIdHash); Future persistAuthorityOidc(String authority); diff --git a/lib/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart b/lib/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart index d5f3763f0..d5820b72d 100644 --- a/lib/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart +++ b/lib/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart @@ -101,4 +101,9 @@ class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource { Future getAuthenticationInfo() { return _authenticationClient.getAuthenticationInfo(); } + + @override + Future deleteTokenOIDC() { + return _tokenOidcCacheManager.deleteTokenOidc(); + } } \ No newline at end of file diff --git a/lib/features/login/data/local/token_oidc_cache_manager.dart b/lib/features/login/data/local/token_oidc_cache_manager.dart index f06874d0e..ebedb9c57 100644 --- a/lib/features/login/data/local/token_oidc_cache_manager.dart +++ b/lib/features/login/data/local/token_oidc_cache_manager.dart @@ -31,4 +31,8 @@ class TokenOidcCacheManager { log('TokenOidcCacheManager::persistOneTokenOidc(): token: ${tokenOIDC.token}'); await _tokenOidcCacheClient.insertItem(tokenOIDC.tokenIdHash, tokenOIDC.toTokenOidcCache()); } + + Future deleteTokenOidc() async { + await _tokenOidcCacheClient.clearAllData(); + } } \ No newline at end of file diff --git a/lib/features/login/data/repository/authentication_oidc_repository_impl.dart b/lib/features/login/data/repository/authentication_oidc_repository_impl.dart index f7eefc32a..d27da621a 100644 --- a/lib/features/login/data/repository/authentication_oidc_repository_impl.dart +++ b/lib/features/login/data/repository/authentication_oidc_repository_impl.dart @@ -82,4 +82,9 @@ class AuthenticationOIDCRepositoryImpl extends AuthenticationOIDCRepository { Future getAuthenticationInfo() { return _oidcDataSource.getAuthenticationInfo(); } + + @override + Future deleteTokenOIDC() { + return _oidcDataSource.deleteTokenOIDC(); + } } \ No newline at end of file diff --git a/lib/features/login/domain/repository/authentication_oidc_repository.dart b/lib/features/login/domain/repository/authentication_oidc_repository.dart index 10b4d7d57..26eadd5fe 100644 --- a/lib/features/login/domain/repository/authentication_oidc_repository.dart +++ b/lib/features/login/domain/repository/authentication_oidc_repository.dart @@ -10,6 +10,8 @@ abstract class AuthenticationOIDCRepository { Future persistTokenOIDC(TokenOIDC tokenOidc); + Future deleteTokenOIDC(); + Future getStoredTokenOIDC(String tokenIdHash); Future persistAuthorityOidc(String authority); diff --git a/lib/features/login/domain/usecases/delete_authority_oidc_interactor.dart b/lib/features/login/domain/usecases/delete_authority_oidc_interactor.dart index 1564a9987..958ffb46a 100644 --- a/lib/features/login/domain/usecases/delete_authority_oidc_interactor.dart +++ b/lib/features/login/domain/usecases/delete_authority_oidc_interactor.dart @@ -4,16 +4,22 @@ 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/authentication_oidc_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; import 'package:tmail_ui_user/features/login/domain/state/delete_authority_oidc_state.dart'; class DeleteAuthorityOidcInteractor { final AuthenticationOIDCRepository _authenticationOIDCRepository; + final CredentialRepository _credentialRepository; - DeleteAuthorityOidcInteractor(this._authenticationOIDCRepository); + DeleteAuthorityOidcInteractor(this._authenticationOIDCRepository, this._credentialRepository); Future> execute() async { try { - await _authenticationOIDCRepository.deleteAuthorityOidc(); + await Future.wait([ + _credentialRepository.removeBaseUrl(), + _authenticationOIDCRepository.deleteAuthorityOidc(), + _authenticationOIDCRepository.deleteTokenOIDC(), + ]); return Right(DeleteAuthorityOidcSuccess()); } catch (exception) { return Left(DeleteAuthorityOidcFailure(exception)); diff --git a/lib/features/login/presentation/login_bindings.dart b/lib/features/login/presentation/login_bindings.dart index d4ed55c5e..c2a4461d6 100644 --- a/lib/features/login/presentation/login_bindings.dart +++ b/lib/features/login/presentation/login_bindings.dart @@ -1,6 +1,5 @@ import 'package:core/core.dart'; import 'package:get/get.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/login/data/datasource/account_datasource.dart'; import 'package:tmail_ui_user/features/login/data/datasource/authentication_datasource.dart'; @@ -9,7 +8,6 @@ import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_oidc_datasource_impl.dart'; import 'package:tmail_ui_user/features/login/data/datasource_impl/hive_account_datasource_impl.dart'; import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.dart'; -import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; @@ -18,7 +16,6 @@ import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart' import 'package:tmail_ui_user/features/login/data/repository/account_repository_impl.dart'; import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart'; import 'package:tmail_ui_user/features/login/data/repository/authentication_repository_impl.dart'; -import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart'; 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/authentication_repository.dart'; @@ -103,7 +100,6 @@ class LoginBindings extends BaseBindings { @override void bindingsRepository() { - Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); @@ -111,9 +107,6 @@ class LoginBindings extends BaseBindings { @override void bindingsRepositoryImpl() { - Get.lazyPut(() => CredentialRepositoryImpl( - Get.find(), - Get.find())); Get.lazyPut(() => AuthenticationRepositoryImpl(Get.find())); Get.lazyPut(() => AuthenticationOIDCRepositoryImpl(Get.find())); Get.lazyPut(() => AccountRepositoryImpl(Get.find())); diff --git a/lib/features/mailbox/presentation/mailbox_bindings.dart b/lib/features/mailbox/presentation/mailbox_bindings.dart index 2ccfcc354..81ecaef6c 100644 --- a/lib/features/mailbox/presentation/mailbox_bindings.dart +++ b/lib/features/mailbox/presentation/mailbox_bindings.dart @@ -1,14 +1,10 @@ import 'package:core/core.dart'; import 'package:get/get.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/caching/state_cache_client.dart'; import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart'; import 'package:tmail_ui_user/features/email/data/datasource_impl/email_datasource_impl.dart'; import 'package:tmail_ui_user/features/email/data/network/email_api.dart'; -import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; -import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart'; -import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart'; import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart'; import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart'; @@ -92,15 +88,11 @@ class MailboxBindings extends BaseBindings { @override void bindingsRepository() { - Get.lazyPut(() => Get.find()); Get.lazyPut(() => Get.find()); } @override void bindingsRepositoryImpl() { - Get.lazyPut(() => CredentialRepositoryImpl( - Get.find(), - Get.find())); Get.lazyPut(() => MailboxRepositoryImpl( { DataSourceType.network: Get.find(), 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 ca45dbbe0..12661cdb5 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -178,8 +178,9 @@ class MailboxDashBoardBindings extends BaseBindings { Get.find(), Get.find(), )); - Get.lazyPut(() => DeleteAuthorityOidcInteractor(Get.find())); - Get.lazyPut(() => GetCredentialInteractor(Get.find())); + 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_bindings.dart b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart index 9edb40944..d31218184 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_bindings.dart @@ -84,8 +84,9 @@ class ManageAccountDashBoardBindings extends BaseBindings { Get.find(), Get.find(), )); - Get.lazyPut(() => DeleteAuthorityOidcInteractor(Get.find())); - Get.lazyPut(() => GetCredentialInteractor(Get.find())); + Get.lazyPut(() => DeleteAuthorityOidcInteractor( + Get.find(), + Get.find())); Get.lazyPut(() => GetStoredTokenOidcInteractor( Get.find(), Get.find(), diff --git a/lib/features/session/presentation/session_page_bindings.dart b/lib/features/session/presentation/session_page_bindings.dart index a27cee64c..6b72ee337 100644 --- a/lib/features/session/presentation/session_page_bindings.dart +++ b/lib/features/session/presentation/session_page_bindings.dart @@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/login/data/network/config/authorization_i import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.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/session/domain/usecases/get_session_interactor.dart'; @@ -47,7 +48,9 @@ class SessionPageBindings extends BaseBindings { @override void bindingsInteractor() { - Get.lazyPut(() => DeleteAuthorityOidcInteractor(Get.find())); + Get.lazyPut(() => DeleteAuthorityOidcInteractor( + Get.find(), + Get.find())); } @override diff --git a/lib/main/bindings/credential/credential_bindings.dart b/lib/main/bindings/credential/credential_bindings.dart index f8e6ff0c1..7f64e99de 100644 --- a/lib/main/bindings/credential/credential_bindings.dart +++ b/lib/main/bindings/credential/credential_bindings.dart @@ -3,6 +3,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/repository/credential_repository_impl.dart'; import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; +import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart'; class CredentialBindings extends Bindings { @@ -16,6 +17,7 @@ class CredentialBindings extends Bindings { void bindingsInteractor() { Get.put(GetCredentialInteractor(Get.find())); + Get.put(DeleteCredentialInteractor(Get.find())); } void bindingsRepository() { diff --git a/lib/main/bindings/local/local_bindings.dart b/lib/main/bindings/local/local_bindings.dart index c436f4d8c..d6d011a6b 100644 --- a/lib/main/bindings/local/local_bindings.dart +++ b/lib/main/bindings/local/local_bindings.dart @@ -56,10 +56,8 @@ class LocalBindings extends Bindings { Get.find(), Get.find(), Get.find(), - Get.find(), Get.find(), Get.find(), - Get.find(), )); } } \ No newline at end of file diff --git a/lib/main/bindings/session/session_bindings.dart b/lib/main/bindings/session/session_bindings.dart index 7be85fde0..daa9db5b6 100644 --- a/lib/main/bindings/session/session_bindings.dart +++ b/lib/main/bindings/session/session_bindings.dart @@ -1,8 +1,6 @@ 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/login/domain/repository/credential_repository.dart'; -import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; import 'package:tmail_ui_user/features/session/data/datasource/session_datasource.dart'; import 'package:tmail_ui_user/features/session/data/datasource_impl/session_datasource_impl.dart'; import 'package:tmail_ui_user/features/session/data/network/session_api.dart'; @@ -31,7 +29,6 @@ class SessionBindings extends BaseBindings { @override void bindingsInteractor() { Get.put(GetSessionInteractor(Get.find())); - Get.put(DeleteCredentialInteractor(Get.find())); } @override