From ad8ef6b608eaab518d91043a04402ab4ddf80327 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 23 Nov 2022 15:07:35 +0700 Subject: [PATCH] TF-1217 Register cache adapter --- lib/features/caching/caching_manager.dart | 22 ++++-- .../caching/config/hive_cache_client.dart | 3 +- .../caching/config/hive_cache_config.dart | 77 +++++++++++++++---- 3 files changed, 80 insertions(+), 22 deletions(-) diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart index 3c72006b0..3e1731adc 100644 --- a/lib/features/caching/caching_manager.dart +++ b/lib/features/caching/caching_manager.dart @@ -13,7 +13,7 @@ class CachingManager { final EmailCacheClient _emailCacheClient; final RecentSearchCacheClient _recentSearchCacheClient; final AccountCacheClient _accountCacheClient; - final FcmTokenCacheClient _firebaseCacheClient; + final FcmTokenCacheClient _fcmTokenCacheClient; CachingManager( this._mailboxCacheClient, @@ -21,7 +21,7 @@ class CachingManager { this._emailCacheClient, this._recentSearchCacheClient, this._accountCacheClient, - this._firebaseCacheClient, + this._fcmTokenCacheClient, ); Future clearAll() async { @@ -32,6 +32,7 @@ class CachingManager { _emailCacheClient.clearAllData(), _recentSearchCacheClient.clearAllData(), _accountCacheClient.clearAllData(), + _fcmTokenCacheClient.clearAllData(), ]); } else { await Future.wait([ @@ -40,15 +41,22 @@ class CachingManager { _emailCacheClient.deleteBox(), _recentSearchCacheClient.deleteBox(), _accountCacheClient.deleteBox(), - _firebaseCacheClient.deleteBox(), + _fcmTokenCacheClient.deleteBox(), ]); } } Future cleanEmailCache() async { - await Future.wait([ - _stateCacheClient.deleteItem(StateType.email.value), - _emailCacheClient.clearAllData(), - ]); + if (kIsWeb) { + await Future.wait([ + _stateCacheClient.deleteItem(StateType.email.value), + _emailCacheClient.clearAllData(), + ]); + } else { + await Future.wait([ + _stateCacheClient.deleteItem(StateType.email.value), + _emailCacheClient.deleteBox(), + ]); + } } } diff --git a/lib/features/caching/config/hive_cache_client.dart b/lib/features/caching/config/hive_cache_client.dart index cba583262..493d7fad2 100644 --- a/lib/features/caching/config/hive_cache_client.dart +++ b/lib/features/caching/config/hive_cache_client.dart @@ -15,8 +15,9 @@ abstract class HiveCacheClient { Future> openBox() async { if (Hive.isBoxOpen(tableName)) { return Hive.box(tableName); + } else { + return Hive.openBox(tableName); } - return Hive.openBox(tableName); } Future> openBoxEncryption() async { diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart index 7e8cc9512..564dc4020 100644 --- a/lib/features/caching/config/hive_cache_config.dart +++ b/lib/features/caching/config/hive_cache_config.dart @@ -6,6 +6,7 @@ import 'package:core/utils/app_logger.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart' as path_provider; +import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; import 'package:tmail_ui_user/features/login/data/local/encryption_key_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/model/account_cache.dart'; import 'package:tmail_ui_user/features/login/data/model/authentication_info_cache.dart'; @@ -66,20 +67,68 @@ class HiveCacheConfig { } void registerAdapter() { - Hive.registerAdapter(MailboxCacheAdapter()); - Hive.registerAdapter(MailboxRightsCacheAdapter()); - Hive.registerAdapter(StateCacheAdapter()); - Hive.registerAdapter(StateTypeAdapter()); - Hive.registerAdapter(EmailAddressHiveCacheAdapter()); - Hive.registerAdapter(EmailCacheAdapter()); - Hive.registerAdapter(RecentSearchCacheAdapter()); - Hive.registerAdapter(TokenOidcCacheAdapter()); - Hive.registerAdapter(AccountCacheAdapter()); - Hive.registerAdapter(EncryptionKeyCacheAdapter()); - Hive.registerAdapter(AuthenticationInfoCacheAdapter()); - Hive.registerAdapter(RecentLoginUrlCacheAdapter()); - Hive.registerAdapter(RecentLoginUsernameCacheAdapter()); - Hive.registerAdapter(FCMTokenCacheAdapter()); + registerCacheAdapter( + MailboxCacheAdapter(), + CachingConstants.MAILBOX_CACHE_IDENTIFY + ); + registerCacheAdapter( + MailboxRightsCacheAdapter(), + CachingConstants.MAILBOX_RIGHTS_CACHE_IDENTIFY + ); + registerCacheAdapter( + StateCacheAdapter(), + CachingConstants.STATE_CACHE_IDENTIFY + ); + registerCacheAdapter( + StateTypeAdapter(), + CachingConstants.STATE_TYPE_IDENTIFY + ); + registerCacheAdapter( + EmailAddressHiveCacheAdapter(), + CachingConstants.EMAIL_ADDRESS_HIVE_CACHE_IDENTIFY + ); + registerCacheAdapter( + EmailCacheAdapter(), + CachingConstants.EMAIL_CACHE_IDENTIFY + ); + registerCacheAdapter( + RecentSearchCacheAdapter(), + CachingConstants.RECENT_SEARCH_HIVE_CACHE_IDENTIFY + ); + registerCacheAdapter( + TokenOidcCacheAdapter(), + CachingConstants.TOKEN_OIDC_HIVE_CACHE_IDENTIFY + ); + registerCacheAdapter( + AccountCacheAdapter(), + CachingConstants.ACCOUNT_HIVE_CACHE_IDENTIFY + ); + registerCacheAdapter( + EncryptionKeyCacheAdapter(), + CachingConstants.ENCRYPTION_KEY_HIVE_CACHE_IDENTIFY + ); + registerCacheAdapter( + AuthenticationInfoCacheAdapter(), + CachingConstants.AUTHENTICATION_INFO_HIVE_CACHE_IDENTIFY + ); + registerCacheAdapter( + RecentLoginUrlCacheAdapter(), + CachingConstants.RECENT_LOGIN_URL_HIVE_CACHE_IDENTITY + ); + registerCacheAdapter( + RecentLoginUsernameCacheAdapter(), + CachingConstants.RECENT_LOGIN_USERNAME_HIVE_CACHE_IDENTITY + ); + registerCacheAdapter( + FCMTokenCacheAdapter(), + CachingConstants.FCM_TOKEN_CACHE_IDENTITY + ); + } + + void registerCacheAdapter(TypeAdapter typeAdapter, int typeId) { + if (!Hive.isAdapterRegistered(typeId)) { + Hive.registerAdapter(typeAdapter); + } } Future closeHive() async {