Trigger OnUpgradeDatabase when upgrade version
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/account_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/account_cache_client.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/config/cache_version.dart';
|
|
||||||
import 'package:tmail_ui_user/features/caching/email_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/email_cache_client.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/hive_cache_version_client.dart';
|
import 'package:tmail_ui_user/features/caching/hive_cache_version_client.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart';
|
import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart';
|
||||||
@@ -49,6 +49,7 @@ class CachingManager {
|
|||||||
_stateCacheClient.deleteItem(StateType.email.value),
|
_stateCacheClient.deleteItem(StateType.email.value),
|
||||||
_emailCacheClient.clearAllData(),
|
_emailCacheClient.clearAllData(),
|
||||||
]);
|
]);
|
||||||
|
log('CachingManager::clearEmailCache(): success');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> clearMailboxCache() async {
|
Future<void> clearMailboxCache() async {
|
||||||
@@ -56,13 +57,27 @@ class CachingManager {
|
|||||||
_stateCacheClient.deleteItem(StateType.mailbox.value),
|
_stateCacheClient.deleteItem(StateType.mailbox.value),
|
||||||
_mailboxCacheClient.clearAllData(),
|
_mailboxCacheClient.clearAllData(),
|
||||||
]);
|
]);
|
||||||
|
log('CachingManager::clearMailboxCache(): success');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> storeCacheVersion() async {
|
Future<void> onUpgradeCache(int oldVersion, int newVersion) async {
|
||||||
return _hiveCacheVersionClient.storeVersion(CacheVersion.hiveDBVersion);
|
log('CachingManager::onUpgradeCache():oldVersion $oldVersion | newVersion: $newVersion');
|
||||||
|
if (oldVersion == 0 && newVersion >= 1) {
|
||||||
|
await Future.wait([
|
||||||
|
clearMailboxCache(),
|
||||||
|
clearEmailCache()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
storeCacheVersion(newVersion);
|
||||||
|
return Future.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<int?> getLatestHiveCacheVersion() {
|
Future<bool> storeCacheVersion(int newVersion) async {
|
||||||
|
log('CachingManager::storeCacheVersion()');
|
||||||
|
return _hiveCacheVersionClient.storeVersion(newVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<int?> getLatestVersion() {
|
||||||
return _hiveCacheVersionClient.getLatestVersion();
|
return _hiveCacheVersionClient.getLatestVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import 'package:core/utils/app_logger.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:path_provider/path_provider.dart' as path_provider;
|
import 'package:path_provider/path_provider.dart' as path_provider;
|
||||||
|
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
|
||||||
|
import 'package:tmail_ui_user/features/caching/config/cache_version.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart';
|
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/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/account_cache.dart';
|
||||||
@@ -41,6 +43,16 @@ class HiveCacheConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> onUpgradeDatabase(CachingManager cachingManager) async {
|
||||||
|
final oldVersion = await cachingManager.getLatestVersion() ?? 0;
|
||||||
|
const newVersion = CacheVersion.hiveDBVersion;
|
||||||
|
log('HiveCacheConfig::onUpgradeDatabase():oldVersion: $oldVersion | newVersion: $newVersion');
|
||||||
|
if (oldVersion != newVersion) {
|
||||||
|
await cachingManager.onUpgradeCache(oldVersion, newVersion);
|
||||||
|
}
|
||||||
|
return Future.value();
|
||||||
|
}
|
||||||
|
|
||||||
static Future<void> initializeEncryptionKey() async {
|
static Future<void> initializeEncryptionKey() async {
|
||||||
final encryptionKeyCacheManager = Get.find<EncryptionKeyCacheManager>();
|
final encryptionKeyCacheManager = Get.find<EncryptionKeyCacheManager>();
|
||||||
final encryptionKeyCache = await encryptionKeyCacheManager.getEncryptionKeyStored();
|
final encryptionKeyCache = await encryptionKeyCacheManager.getEncryptionKeyStored();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:model/model.dart';
|
|||||||
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
|
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.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/caching/caching_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/config/cache_version.dart';
|
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart';
|
||||||
import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart';
|
import 'package:tmail_ui_user/features/cleanup/domain/model/cleanup_rule.dart';
|
||||||
import 'package:tmail_ui_user/features/cleanup/domain/model/email_cleanup_rule.dart';
|
import 'package:tmail_ui_user/features/cleanup/domain/model/email_cleanup_rule.dart';
|
||||||
import 'package:tmail_ui_user/features/cleanup/domain/model/recent_login_url_cleanup_rule.dart';
|
import 'package:tmail_ui_user/features/cleanup/domain/model/recent_login_url_cleanup_rule.dart';
|
||||||
@@ -78,7 +78,6 @@ class HomeController extends BaseController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
log('HomeController::onReady()');
|
|
||||||
_cleanupCache();
|
_cleanupCache();
|
||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
@@ -92,7 +91,7 @@ class HomeController extends BaseController {
|
|||||||
static void downloadCallback(String id, DownloadTaskStatus status, int progress) {}
|
static void downloadCallback(String id, DownloadTaskStatus status, int progress) {}
|
||||||
|
|
||||||
void _cleanupCache() async {
|
void _cleanupCache() async {
|
||||||
await _checkCacheVersion();
|
await HiveCacheConfig().onUpgradeDatabase(_cachingManager);
|
||||||
|
|
||||||
await Future.wait([
|
await Future.wait([
|
||||||
_cleanupEmailCacheInteractor.execute(EmailCleanupRule(Duration.defaultCacheInternal)),
|
_cleanupEmailCacheInteractor.execute(EmailCleanupRule(Duration.defaultCacheInternal)),
|
||||||
@@ -102,19 +101,6 @@ class HomeController extends BaseController {
|
|||||||
]).then((value) => _getAuthenticatedAccount());
|
]).then((value) => _getAuthenticatedAccount());
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _checkCacheVersion() async {
|
|
||||||
final latestHiveCacheVersion = await _cachingManager.getLatestHiveCacheVersion();
|
|
||||||
log('HomeController::_checkCacheVersion():latestHiveCacheVersion: $latestHiveCacheVersion');
|
|
||||||
if (latestHiveCacheVersion == null || latestHiveCacheVersion < CacheVersion.hiveDBVersion) {
|
|
||||||
await Future.wait([
|
|
||||||
_cachingManager.clearMailboxCache(),
|
|
||||||
_cachingManager.clearEmailCache()
|
|
||||||
]);
|
|
||||||
await _cachingManager.storeCacheVersion();
|
|
||||||
}
|
|
||||||
return Future.value(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _getAuthenticatedAccount() async {
|
void _getAuthenticatedAccount() async {
|
||||||
log('HomeController::_getAuthenticatedAccount()');
|
log('HomeController::_getAuthenticatedAccount()');
|
||||||
consumeState(_getAuthenticatedAccountInteractor.execute());
|
consumeState(_getAuthenticatedAccountInteractor.execute());
|
||||||
|
|||||||
Reference in New Issue
Block a user