diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index 58ba7acfe..538331cc9 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -448,6 +448,8 @@ abstract class BaseController extends GetxController return; } + await clearAllMailDataCached(); + _isFcmEnabled = _isFcmActivated(session, accountId); if (isAuthenticatedWithOidc) { consumeState(logoutOidcInteractor.execute()); @@ -558,6 +560,17 @@ abstract class BaseController extends GetxController removeAllPageAndGoToLogin(); } + Future clearAllMailDataCached() async { + try { + await cachingManager.clearMailDataCached(); + if (PlatformInfo.isMobile) { + await cachingManager.clearAllFileInStorage(); + } + } catch (e) { + logError('BaseController::clearAllMailDataCached:Exception = $e'); + } + } + Future clearAllData() async { try { if (isAuthenticatedWithOidc) { diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart index 71e84671c..89c4b4be9 100644 --- a/lib/features/caching/caching_manager.dart +++ b/lib/features/caching/caching_manager.dart @@ -73,12 +73,20 @@ class CachingManager { ); Future clearAll() async { + await Future.wait([ + clearMailDataCached(), + _fcmCacheManager.clear(), + _accountCacheManager.clear(), + if (PlatformInfo.isIOS) + _keychainSharingManager.delete() + ], eagerError: true); + } + + Future clearMailDataCached() async { await Future.wait([ _stateCacheManager.clear(), _mailboxCacheManager.clear(), _emailCacheManager.clear(), - _fcmCacheManager.clear(), - _accountCacheManager.clear(), if (PlatformInfo.isMobile) ...[ _sessionCacheManager.clear(), @@ -86,8 +94,6 @@ class CachingManager { _openedEmailCacheManager.clear(), _sendingEmailCacheManager.clearAllSendingEmails(), ], - if (PlatformInfo.isIOS) - _keychainSharingManager.delete() ], eagerError: true); }