79 lines
2.3 KiB
Dart
79 lines
2.3 KiB
Dart
import 'package:hub/shared/helpers/secure_storage_helper.dart';
|
|
import 'package:hub/shared/helpers/shared_preferences_storage_helper.dart';
|
|
import 'package:hub/shared/helpers/sqlite_storage_helper.dart';
|
|
import 'package:hub/shared/utils/cache_util.dart';
|
|
|
|
abstract class Storage {
|
|
Future<void> set(String key, dynamic value);
|
|
Future<dynamic> get(String key);
|
|
Future<void> delete(String key);
|
|
}
|
|
|
|
class StorageData {
|
|
final String key;
|
|
final dynamic value;
|
|
final StorageType type;
|
|
|
|
StorageData(this.key, this.value, this.type);
|
|
}
|
|
|
|
enum StorageType { SecureStorage, SharedPreferences, SQLite3 }
|
|
|
|
class StorageManager {
|
|
final SecureStorageHelper _secureStorage = SecureStorageHelper();
|
|
final SharedPreferencesStorageHelper _sharedPreferences =
|
|
SharedPreferencesStorageHelper();
|
|
final SQLiteStorageHelper _sqliteStorage = SQLiteStorageHelper();
|
|
|
|
Future<void> set(StorageData data) async {
|
|
switch (data.type) {
|
|
case StorageType.SecureStorage:
|
|
CacheUtil.set(data.key, data.value);
|
|
await _secureStorage.set(data.key, data.value);
|
|
break;
|
|
case StorageType.SharedPreferences:
|
|
await _sharedPreferences.set(data.key, data.value);
|
|
break;
|
|
case StorageType.SQLite3:
|
|
await _sqliteStorage.set(data.key, data.value);
|
|
break;
|
|
}
|
|
}
|
|
|
|
Future<dynamic> get(StorageData data) async {
|
|
var value = CacheUtil.get(data.key);
|
|
if (value == null) {
|
|
switch (data.type) {
|
|
case StorageType.SecureStorage:
|
|
value = await _secureStorage.get(data.key);
|
|
break;
|
|
case StorageType.SharedPreferences:
|
|
value = await _sharedPreferences.get(data.key);
|
|
break;
|
|
case StorageType.SQLite3:
|
|
value = await _sqliteStorage.get(data.key);
|
|
break;
|
|
}
|
|
CacheUtil.set(data.key, value);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
Future<void> delete(StorageData data) async {
|
|
switch (data.type) {
|
|
case StorageType.SecureStorage:
|
|
CacheUtil.delete(data.key);
|
|
await _secureStorage.delete(data.key);
|
|
break;
|
|
case StorageType.SharedPreferences:
|
|
await _sharedPreferences.delete(data.key);
|
|
break;
|
|
case StorageType.SQLite3:
|
|
await _sqliteStorage.delete(data.key);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
class StorageUtil {}
|