Mark cache version to clear cache data
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
|
||||
abstract class CacheVersionClient {
|
||||
|
||||
String get versionKey;
|
||||
|
||||
Future<bool> storeVersion(int newVersion);
|
||||
|
||||
Future<int?> getLatestVersion();
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/foundation.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/hive_cache_version_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';
|
||||
@@ -18,6 +19,7 @@ class CachingManager {
|
||||
final AccountCacheClient _accountCacheClient;
|
||||
final FCMCacheManager _fcmCacheManager;
|
||||
final FCMSubscriptionCacheClient _fcmSubscriptionCacheClient;
|
||||
final HiveCacheVersionClient _hiveCacheVersionClient;
|
||||
|
||||
CachingManager(
|
||||
this._mailboxCacheClient,
|
||||
@@ -27,6 +29,7 @@ class CachingManager {
|
||||
this._accountCacheClient,
|
||||
this._fcmCacheManager,
|
||||
this._fcmSubscriptionCacheClient,
|
||||
this._hiveCacheVersionClient,
|
||||
);
|
||||
|
||||
Future<void> clearAll() async {
|
||||
@@ -41,18 +44,26 @@ class CachingManager {
|
||||
]);
|
||||
}
|
||||
|
||||
Future<void> cleanEmailCache() async {
|
||||
if (kIsWeb) {
|
||||
await Future.wait([
|
||||
_stateCacheClient.deleteItem(StateType.email.value),
|
||||
_emailCacheClient.clearAllData(),
|
||||
]);
|
||||
} else {
|
||||
await Future.wait([
|
||||
_stateCacheClient.deleteItem(StateType.email.value),
|
||||
_emailCacheClient.deleteBox(),
|
||||
]);
|
||||
}
|
||||
Future<void> clearEmailCache() async {
|
||||
await Future.wait([
|
||||
_stateCacheClient.deleteItem(StateType.email.value),
|
||||
_emailCacheClient.clearAllData(),
|
||||
]);
|
||||
}
|
||||
|
||||
Future<void> clearMailboxCache() async {
|
||||
await Future.wait([
|
||||
_stateCacheClient.deleteItem(StateType.mailbox.value),
|
||||
_mailboxCacheClient.clearAllData(),
|
||||
]);
|
||||
}
|
||||
|
||||
Future<bool> storeCacheVersion() async {
|
||||
return _hiveCacheVersionClient.storeVersion(CacheVersion.hiveDBVersion);
|
||||
}
|
||||
|
||||
Future<int?> getLatestHiveCacheVersion() {
|
||||
return _hiveCacheVersionClient.getLatestVersion();
|
||||
}
|
||||
|
||||
Future<void> closeHive() async {
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
class CacheVersion {
|
||||
static const int hiveDBVersion = 1;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:tmail_ui_user/features/caching/cache_version_client.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
||||
|
||||
class HiveCacheVersionClient extends CacheVersionClient {
|
||||
|
||||
final SharedPreferences _sharedPreferences;
|
||||
final ExceptionThrower _exceptionThrower;
|
||||
|
||||
HiveCacheVersionClient(this._sharedPreferences, this._exceptionThrower);
|
||||
|
||||
@override
|
||||
String get versionKey => 'HiveCacheVersion';
|
||||
|
||||
@override
|
||||
Future<int?> getLatestVersion() {
|
||||
return Future.sync(() {
|
||||
final latestVersion = _sharedPreferences.getInt(versionKey);
|
||||
return latestVersion;
|
||||
}).catchError((error) {
|
||||
_exceptionThrower.throwException(error);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> storeVersion(int newVersion) {
|
||||
return Future.sync(() async {
|
||||
return await _sharedPreferences.setInt(versionKey, newVersion);
|
||||
}).catchError((error) {
|
||||
_exceptionThrower.throwException(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user