From 4fc985b314a740afcbf0de00de86e53251d08ae9 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 6 Oct 2021 23:52:43 +0700 Subject: [PATCH] TF-141 Delete cache when logout --- lib/features/caching/caching_manager.dart | 18 ++++++++++++++++++ .../mailbox/presentation/mailbox_bindings.dart | 4 +++- .../presentation/mailbox_controller.dart | 10 +++++++++- .../session/presentation/session_bindings.dart | 6 +++++- .../presentation/session_controller.dart | 13 ++++++++++++- lib/main/bindings/local/local_bindings.dart | 4 ++++ 6 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 lib/features/caching/caching_manager.dart diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart new file mode 100644 index 000000000..6e7cab0b7 --- /dev/null +++ b/lib/features/caching/caching_manager.dart @@ -0,0 +1,18 @@ + +import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart'; +import 'package:tmail_ui_user/features/caching/state_cache_client.dart'; + +class CachingManager { + + final MailboxCacheClient _mailboxCacheClient; + final StateCacheClient _stateCacheClient; + + CachingManager(this._mailboxCacheClient, this._stateCacheClient); + + Future clearAll() async { + await Future.wait([ + _stateCacheClient.deleteBox(), + _mailboxCacheClient.deleteBox(), + ]); + } +} \ No newline at end of file diff --git a/lib/features/mailbox/presentation/mailbox_bindings.dart b/lib/features/mailbox/presentation/mailbox_bindings.dart index cd168ce62..d1b44ca4f 100644 --- a/lib/features/mailbox/presentation/mailbox_bindings.dart +++ b/lib/features/mailbox/presentation/mailbox_bindings.dart @@ -1,6 +1,7 @@ import 'package:core/core.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/caching/state_cache_client.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'; @@ -46,6 +47,7 @@ class MailboxBindings extends Bindings { Get.find(), Get.find(), Get.find(), - Get.find())); + Get.find(), + Get.find())); } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 4537ad5a2..326374aee 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -7,6 +7,7 @@ import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/model.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/email/domain/state/mark_as_email_read_state.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart'; @@ -30,6 +31,7 @@ class MailboxController extends BaseController { final RefreshAllMailboxInteractor _refreshAllMailboxInteractor; final TreeBuilder _treeBuilder; final ResponsiveUtils responsiveUtils; + final CachingManager _cachingManager; final defaultMailboxList = [].obs; final folderMailboxNodeList = [].obs; @@ -41,7 +43,8 @@ class MailboxController extends BaseController { this._deleteCredentialInteractor, this._refreshAllMailboxInteractor, this._treeBuilder, - this.responsiveUtils + this.responsiveUtils, + this._cachingManager, ); @override @@ -185,8 +188,13 @@ class MailboxController extends BaseController { await _deleteCredentialInteractor.execute(); } + void _clearAllCache() async { + await _cachingManager.clearAll(); + } + void closeMailboxScreen() { _deleteCredential(); + _clearAllCache(); pushAndPopAll(AppRoutes.LOGIN); } } \ No newline at end of file diff --git a/lib/features/session/presentation/session_bindings.dart b/lib/features/session/presentation/session_bindings.dart index de3f01f61..407d67431 100644 --- a/lib/features/session/presentation/session_bindings.dart +++ b/lib/features/session/presentation/session_bindings.dart @@ -1,5 +1,6 @@ import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tmail_ui_user/features/caching/caching_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'; @@ -22,6 +23,9 @@ class SessionBindings extends Bindings { Get.lazyPut(() => CredentialRepositoryImpl(Get.find())); Get.lazyPut(() => Get.find()); Get.lazyPut(() => DeleteCredentialInteractor(Get.find())); - Get.lazyPut(() => SessionController(Get.find(), Get.find())); + Get.lazyPut(() => SessionController( + Get.find(), + Get.find(), + Get.find())); } } \ No newline at end of file diff --git a/lib/features/session/presentation/session_controller.dart b/lib/features/session/presentation/session_controller.dart index 897cdd8b1..a944cf482 100644 --- a/lib/features/session/presentation/session_controller.dart +++ b/lib/features/session/presentation/session_controller.dart @@ -1,4 +1,5 @@ import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart'; import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart'; import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart'; @@ -8,8 +9,13 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class SessionController extends GetxController { final GetSessionInteractor _getSessionInteractor; final DeleteCredentialInteractor _deleteCredentialInteractor; + final CachingManager _cachingManager; - SessionController(this._getSessionInteractor, this._deleteCredentialInteractor); + SessionController( + this._getSessionInteractor, + this._deleteCredentialInteractor, + this._cachingManager, + ); @override void onReady() { @@ -28,8 +34,13 @@ class SessionController extends GetxController { await _deleteCredentialInteractor.execute(); } + void _clearAllCache() async { + await _cachingManager.clearAll(); + } + void _goToLogin() { _deleteCredential(); + _clearAllCache(); pushAndPop(AppRoutes.LOGIN); } diff --git a/lib/main/bindings/local/local_bindings.dart b/lib/main/bindings/local/local_bindings.dart index f01c99944..36dd94cfc 100644 --- a/lib/main/bindings/local/local_bindings.dart +++ b/lib/main/bindings/local/local_bindings.dart @@ -1,6 +1,7 @@ import 'package:core/core.dart'; import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart'; import 'package:tmail_ui_user/features/caching/state_cache_client.dart'; import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart'; @@ -21,5 +22,8 @@ class LocalBindings extends Bindings { Get.put(MailboxCacheClient()); Get.put(StateCacheClient()); Get.put(MailboxCacheManager(Get.find())); + Get.put(CachingManager( + Get.find(), + Get.find())); } } \ No newline at end of file