Skip to content

Commit 780b84b

Browse files
committed
TF-2420 Upgrade the Hive database version to force users to log in again
Signed-off-by: dab246 <[email protected]>
1 parent cad9c64 commit 780b84b

File tree

7 files changed

+70
-18
lines changed

7 files changed

+70
-18
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
abstract class UpgradeDatabaseSteps {
3+
Future<void> onUpgrade(int oldVersion, int newVersion);
4+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
import 'package:tmail_ui_user/features/base/upgradeable/upgrade_database_steps.dart';
3+
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
4+
5+
class UpgradeHiveDatabaseSteps extends UpgradeDatabaseSteps {
6+
7+
final CachingManager _cachingManager;
8+
9+
UpgradeHiveDatabaseSteps(this._cachingManager);
10+
11+
@override
12+
Future<void> onUpgrade(int oldVersion, int newVersion) async {
13+
if (oldVersion != newVersion) {
14+
await _cachingManager.clearData();
15+
}
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
import 'package:tmail_ui_user/features/base/upgradeable/upgrade_database_steps.dart';
3+
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
4+
5+
class UpgradeHiveDatabaseStepsV10 extends UpgradeDatabaseSteps {
6+
7+
final CachingManager _cachingManager;
8+
9+
UpgradeHiveDatabaseStepsV10(this._cachingManager);
10+
11+
@override
12+
Future<void> onUpgrade(int oldVersion, int newVersion) async {
13+
if (oldVersion > 0 && oldVersion < newVersion && newVersion == 10) {
14+
await _cachingManager.clearAll();
15+
}
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
import 'package:tmail_ui_user/features/base/upgradeable/upgrade_database_steps.dart';
3+
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
4+
5+
class UpgradeHiveDatabaseStepsV7 extends UpgradeDatabaseSteps {
6+
7+
final CachingManager _cachingManager;
8+
9+
UpgradeHiveDatabaseStepsV7(this._cachingManager);
10+
11+
@override
12+
Future<void> onUpgrade(int oldVersion, int newVersion) async {
13+
if (oldVersion > 0 && oldVersion < newVersion && newVersion == 7) {
14+
await _cachingManager.clearAll();
15+
}
16+
}
17+
}

lib/features/caching/caching_manager.dart

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,6 @@ class CachingManager {
111111
], eagerError: true);
112112
}
113113

114-
Future<void> onUpgradeCache(int oldVersion, int newVersion) async {
115-
log('CachingManager::onUpgradeCache():oldVersion $oldVersion | newVersion: $newVersion');
116-
await clearData();
117-
if (oldVersion > 0 && oldVersion < newVersion && newVersion == 7) {
118-
await clearAll();
119-
}
120-
await storeCacheVersion(newVersion);
121-
}
122-
123114
Future<bool> storeCacheVersion(int newVersion) async {
124115
log('CachingManager::storeCacheVersion()');
125116
return _hiveCacheVersionClient.storeVersion(newVersion);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11

22
class CacheVersion {
3-
static const int hiveDBVersion = 9;
3+
static const int hiveDBVersion = 10;
44
}

lib/features/caching/config/hive_cache_config.dart

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ import 'package:core/utils/app_logger.dart';
66
import 'package:core/utils/platform_info.dart';
77
import 'package:hive/hive.dart';
88
import 'package:path_provider/path_provider.dart' as path_provider;
9+
import 'package:tmail_ui_user/features/base/upgradeable/upgrade_hive_database_steps.dart';
10+
import 'package:tmail_ui_user/features/base/upgradeable/upgrade_hive_database_steps_v10.dart';
11+
import 'package:tmail_ui_user/features/base/upgradeable/upgrade_hive_database_steps_v7.dart';
912
import 'package:tmail_ui_user/features/caching/caching_manager.dart';
1013
import 'package:tmail_ui_user/features/caching/config/cache_version.dart';
1114
import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart';
1215
import 'package:tmail_ui_user/features/home/data/model/session_hive_obj.dart';
1316
import 'package:tmail_ui_user/features/login/data/local/encryption_key_cache_manager.dart';
1417
import 'package:tmail_ui_user/features/login/data/model/account_cache.dart';
15-
import 'package:tmail_ui_user/features/login/data/model/authentication_info_cache.dart';
18+
import 'package:tmail_ui_user/features/login/data/model/basic_auth_cache.dart';
1619
import 'package:tmail_ui_user/features/login/data/model/encryption_key_cache.dart';
1720
import 'package:tmail_ui_user/features/login/data/model/recent_login_url_cache.dart';
1821
import 'package:tmail_ui_user/features/login/data/model/recent_login_username_cache.dart';
@@ -54,9 +57,12 @@ class HiveCacheConfig {
5457
final oldVersion = await cachingManager.getLatestVersion() ?? 0;
5558
const newVersion = CacheVersion.hiveDBVersion;
5659
log('HiveCacheConfig::onUpgradeDatabase():oldVersion: $oldVersion | newVersion: $newVersion');
57-
if (oldVersion != newVersion) {
58-
await cachingManager.onUpgradeCache(oldVersion, newVersion);
59-
}
60+
61+
await UpgradeHiveDatabaseSteps(cachingManager).onUpgrade(oldVersion, newVersion);
62+
await UpgradeHiveDatabaseStepsV7(cachingManager).onUpgrade(oldVersion, newVersion);
63+
await UpgradeHiveDatabaseStepsV10(cachingManager).onUpgrade(oldVersion, newVersion);
64+
65+
await cachingManager.storeCacheVersion(newVersion);
6066
}
6167

6268
static Future<void> initializeEncryptionKey() async {
@@ -125,6 +131,10 @@ class HiveCacheConfig {
125131
TokenOidcCacheAdapter(),
126132
CachingConstants.TOKEN_OIDC_HIVE_CACHE_IDENTIFY
127133
);
134+
registerCacheAdapter<BasicAuthCache>(
135+
BasicAuthCacheAdapter(),
136+
CachingConstants.BASIC_AUTH_HIVE_CACHE_IDENTIFY
137+
);
128138
registerCacheAdapter<AccountCache>(
129139
AccountCacheAdapter(),
130140
CachingConstants.ACCOUNT_HIVE_CACHE_IDENTIFY
@@ -133,10 +143,6 @@ class HiveCacheConfig {
133143
EncryptionKeyCacheAdapter(),
134144
CachingConstants.ENCRYPTION_KEY_HIVE_CACHE_IDENTIFY
135145
);
136-
registerCacheAdapter<AuthenticationInfoCache>(
137-
AuthenticationInfoCacheAdapter(),
138-
CachingConstants.AUTHENTICATION_INFO_HIVE_CACHE_IDENTIFY
139-
);
140146
registerCacheAdapter<RecentLoginUrlCache>(
141147
RecentLoginUrlCacheAdapter(),
142148
CachingConstants.RECENT_LOGIN_URL_HIVE_CACHE_IDENTITY

0 commit comments

Comments
 (0)