refactor(mobile): add Isar DB & Store class (#1574)

* refactor(mobile): add Isar DB & Store class

new Store: globally accessible key-value store like Hive (but based on Isar)

replace first few places of Hive usage with the new Store

* reduce max. DB size to prevent errors on older iOS devices

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Fynn Petersen-Frey 2023-02-09 18:32:08 +01:00 committed by GitHub
parent adb265794c
commit 911c35a7f1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 796 additions and 18 deletions

View file

@ -0,0 +1,24 @@
import 'package:flutter/cupertino.dart';
import 'package:hive/hive.dart';
import 'package:immich_mobile/constants/hive_box.dart';
import 'package:immich_mobile/shared/models/store.dart';
Future<void> migrateHiveToStoreIfNecessary() async {
try {
if (await Hive.boxExists(userInfoBox)) {
final Box box = await Hive.openBox(userInfoBox);
await _migrateSingleKey(box, userIdKey, StoreKey.userRemoteId);
await _migrateSingleKey(box, assetEtagKey, StoreKey.assetETag);
}
} catch (e) {
debugPrint("Error while migrating userInfoBox $e");
}
}
_migrateSingleKey(Box box, String hiveKey, StoreKey key) async {
final String? value = box.get(hiveKey);
if (value != null) {
await Store.put(key, value);
await box.delete(hiveKey);
}
}