flutter-freaccess-hub/lib/shared/utils/storage_util.dart

86 lines
2.5 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 {
static final SecureStorageHelper _secureStorage = SecureStorageHelper();
static final SharedPreferencesStorageHelper _sharedPreferences =
SharedPreferencesStorageHelper();
static final SQLiteStorageHelper _sqliteStorage = SQLiteStorageHelper();
static 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;
}
}
static 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;
}
static 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;
}
}
static Future<void> purge() async {
// CacheUtil.purge();
await _secureStorage.purge();
await _sharedPreferences.purge();
await _sqliteStorage.purge();
}
}
class StorageUtil {}