diff --git a/lib/features/caching/authentication_info_cache_client.dart b/lib/features/caching/authentication_info_cache_client.dart index b7335c4a7..8995a4f4d 100644 --- a/lib/features/caching/authentication_info_cache_client.dart +++ b/lib/features/caching/authentication_info_cache_client.dart @@ -98,14 +98,16 @@ class AuthenticationInfoCacheClient extends HiveCacheClient> openBox() async { - return Future.sync(() async { - final encryptionKey = await getEncryptionKey(); + final encryptionKey = await getEncryptionKey(); + if (Hive.isBoxOpen(tableName)) { + return Hive.box(tableName); + } else { return Hive.openBox( tableName, - encryptionCipher: HiveAesCipher(encryptionKey!)); - }).catchError((error) { - throw error; - }); + encryptionCipher: encryptionKey != null + ? HiveAesCipher(encryptionKey) + : null); + } } @override diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart index e3b09917f..44d192b2a 100644 --- a/lib/features/caching/caching_manager.dart +++ b/lib/features/caching/caching_manager.dart @@ -2,7 +2,6 @@ import 'package:flutter/foundation.dart'; import 'package:tmail_ui_user/features/caching/account_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'; @@ -14,7 +13,6 @@ class CachingManager { final EmailCacheClient _emailCacheClient; final RecentSearchCacheClient _recentSearchCacheClient; final AccountCacheClient _accountCacheClient; - final EncryptionKeyCacheClient _encryptionKeyCacheClient; CachingManager( this._mailboxCacheClient, @@ -22,7 +20,6 @@ class CachingManager { this._emailCacheClient, this._recentSearchCacheClient, this._accountCacheClient, - this._encryptionKeyCacheClient, ); Future clearAll() async { @@ -33,7 +30,6 @@ class CachingManager { _emailCacheClient.clearAllData(), _recentSearchCacheClient.clearAllData(), _accountCacheClient.clearAllData(), - _encryptionKeyCacheClient.clearAllData(), ]); } else { await Future.wait([ @@ -42,7 +38,6 @@ class CachingManager { _emailCacheClient.deleteBox(), _recentSearchCacheClient.deleteBox(), _accountCacheClient.deleteBox(), - _encryptionKeyCacheClient.deleteBox(), ]); } } diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart index dfb498bbf..3d53fc59e 100644 --- a/lib/features/caching/config/hive_cache_config.dart +++ b/lib/features/caching/config/hive_cache_config.dart @@ -42,7 +42,7 @@ class HiveCacheConfig { final encryptionKeyCache = await encryptionKeyCacheManager.getEncryptionKeyStored(); if (encryptionKeyCache == null) { final secureKey = Hive.generateSecureKey(); - final secureKeyEncode = base64UrlEncode(secureKey); + final secureKeyEncode = base64Encode(secureKey); log('HiveCacheConfig::_initializeEncryptionKey(): secureKeyEncode: $secureKeyEncode'); await encryptionKeyCacheManager.storeEncryptionKey(EncryptionKeyCache(secureKeyEncode)); } @@ -51,15 +51,12 @@ class HiveCacheConfig { static Future getEncryptionKey() async { final encryptionKeyCacheManager = Get.find(); var encryptionKeyCache = await encryptionKeyCacheManager.getEncryptionKeyStored(); - if (encryptionKeyCache == null) { - await initializeEncryptionKey(); - encryptionKeyCache = await encryptionKeyCacheManager.getEncryptionKeyStored(); - } if (encryptionKeyCache != null) { - log('HiveCacheConfig::getEncryptionKey(): encryptionKey: ${encryptionKeyCache.value}'); - final encryptionKey = base64Url.decode(encryptionKeyCache.value); - return encryptionKey; + final encryptionKey = encryptionKeyCache.value; + log('HiveCacheConfig::getEncryptionKey(): encryptionKey: $encryptionKey'); + final encryptionKeyDecode = base64Decode(encryptionKeyCache.value); + return encryptionKeyDecode; } else { return null; } diff --git a/lib/features/caching/encryption_key_cache_client.dart b/lib/features/caching/encryption_key_cache_client.dart index 42a6d227e..05db8aff6 100644 --- a/lib/features/caching/encryption_key_cache_client.dart +++ b/lib/features/caching/encryption_key_cache_client.dart @@ -98,7 +98,11 @@ class EncryptionKeyCacheClient extends HiveCacheClient { @override Future> openBox() async { - return Hive.openBox(tableName); + if (Hive.isBoxOpen(tableName)) { + return Hive.box(tableName); + } else { + return Hive.openBox(tableName); + } } @override diff --git a/lib/features/caching/token_oidc_cache_client.dart b/lib/features/caching/token_oidc_cache_client.dart index 2047b7e09..813136558 100644 --- a/lib/features/caching/token_oidc_cache_client.dart +++ b/lib/features/caching/token_oidc_cache_client.dart @@ -98,14 +98,16 @@ class TokenOidcCacheClient extends HiveCacheClient { @override Future> openBox() async { - return Future.sync(() async { - final encryptionKey = await getEncryptionKey(); + final encryptionKey = await getEncryptionKey(); + if (Hive.isBoxOpen(tableName)) { + return Hive.box(tableName); + } else { return Hive.openBox( tableName, - encryptionCipher: HiveAesCipher(encryptionKey!)); - }).catchError((error) { - throw error; - }); + encryptionCipher: encryptionKey != null + ? HiveAesCipher(encryptionKey) + : null); + } } @override diff --git a/lib/main/bindings/local/local_bindings.dart b/lib/main/bindings/local/local_bindings.dart index d6d011a6b..3e81fd5fa 100644 --- a/lib/main/bindings/local/local_bindings.dart +++ b/lib/main/bindings/local/local_bindings.dart @@ -57,7 +57,6 @@ class LocalBindings extends Bindings { Get.find(), Get.find(), Get.find(), - Get.find(), )); } } \ No newline at end of file