142 lines
4.8 KiB
Dart
142 lines
4.8 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:hub/shared/helpers/base_storage.dart';
|
|
import 'package:hub/shared/helpers/database_storage.dart';
|
|
import 'package:hub/shared/helpers/secure_storage.dart';
|
|
import 'package:hub/shared/helpers/shared_preferences_storage.dart';
|
|
import 'package:hub/shared/services/license/license_service.dart';
|
|
import 'package:hub/shared/services/sqlite/sqlite_service.dart';
|
|
|
|
class StorageHelper {
|
|
static final StorageHelper _instance = StorageHelper._internal();
|
|
factory StorageHelper() => _instance;
|
|
StorageHelper._internal();
|
|
|
|
late BuildContext? _context;
|
|
late bool _isRecovered = false;
|
|
BuildContext? get context => _context;
|
|
set context(BuildContext? context) => _context = context;
|
|
|
|
bool get isRecovered => _isRecovered;
|
|
set isRecovered(bool isRecovered) => _isRecovered = isRecovered;
|
|
|
|
Future<void> init() async {
|
|
await SecureStorage.instance.init();
|
|
await SharedPreferencesStorage.instance.init();
|
|
await DatabaseStorage.instance.init();
|
|
|
|
String? isFirstRun = await SharedPreferencesStorage.instance.get(SharedPreferencesKey.isFirstRun.value);
|
|
|
|
if (isFirstRun == 'true') {
|
|
await SharedPreferencesStorage.instance.set(SharedPreferencesKey.isFirstRun.value, 'false');
|
|
await SecureStorage.instance.set(SecureStorageKey.isLogged.value, 'false');
|
|
}
|
|
}
|
|
|
|
static BaseStorage getInstance(Storage storage) {
|
|
switch (storage) {
|
|
case Storage.secureStorage:
|
|
return SecureStorage.instance;
|
|
case Storage.sharedPreferences:
|
|
return SharedPreferencesStorage.instance;
|
|
case Storage.sqliteStorage:
|
|
return SQLiteStorage.instance;
|
|
case Storage.licenseStorage:
|
|
return LicenseService();
|
|
default:
|
|
throw Exception('Storage not found');
|
|
}
|
|
}
|
|
|
|
static BaseStorage getInstanceByKey(String key) {
|
|
if (SecureStorageKey.values.map((e) => e.value).toList().contains(key)) {
|
|
return SecureStorage.instance;
|
|
}
|
|
if (SharedPreferencesKey.values.map((e) => e.value).toList().contains(key)) {
|
|
return SharedPreferencesStorage.instance;
|
|
}
|
|
if (SQLiteStorageKey.values.map((e) => e.value).toList().contains(key)) {
|
|
return SQLiteStorage.instance;
|
|
}
|
|
if (LicenseStorageKey.values.map((e) => e.value).toList().contains(key)) {
|
|
return LicenseService();
|
|
}
|
|
throw Exception('Key not found');
|
|
}
|
|
|
|
Future<String?> g(String key) {
|
|
return getInstanceByKey(key).get(key);
|
|
}
|
|
|
|
Future<void> s(String key, String value) {
|
|
return getInstanceByKey(key).set(key, value);
|
|
}
|
|
|
|
Future<void> d(String key) {
|
|
return getInstanceByKey(key).delete(key);
|
|
}
|
|
|
|
Future<void> c(Storage storage) {
|
|
return getInstance(storage).clearAll();
|
|
}
|
|
|
|
// Future<String?> get(String key, Storage storage) {
|
|
// switch (storage) {
|
|
// case Storage.SecureStorage:
|
|
// return SecureStorage.instance.get(key);
|
|
// case Storage.SharedPreferences:
|
|
// return SharedPreferencesStorage.instance.get(key);
|
|
// case Storage.SQLiteStorage:
|
|
// return SQLiteStorage.instance.get(key);
|
|
// case Storage.LicenseStorage:
|
|
// return LicenseStorage.instance.get(key);
|
|
// default:
|
|
// throw Exception('Storage not found');
|
|
// }
|
|
// }
|
|
|
|
// Future<void> set(String key, String value, Storage storage) {
|
|
// switch (storage) {
|
|
// case Storage.SecureStorage:
|
|
// return SecureStorage.instance.set(key, value);
|
|
// case Storage.SharedPreferences:
|
|
// return SharedPreferencesStorage.instance.set(key, value);
|
|
// case Storage.SQLiteStorage:
|
|
// return SQLiteStorage.instance.set(key, value);
|
|
// case Storage.LicenseStorage:
|
|
// return LicenseStorage.instance.set(key, value);
|
|
// default:
|
|
// throw Exception('Storage not found');
|
|
// }
|
|
// }
|
|
|
|
// Future<void> delete(String key, Storage storage) {
|
|
// switch (storage) {
|
|
// case Storage.SecureStorage:
|
|
// return SecureStorage.instance.delete(key);
|
|
// case Storage.SharedPreferences:
|
|
// return SharedPreferencesStorage.instance.delete(key);
|
|
// case Storage.SQLiteStorage:
|
|
// return SQLiteStorage.instance.delete(key);
|
|
// case Storage.LicenseStorage:
|
|
// return LicenseStorage.instance.delete(key);
|
|
// default:
|
|
// throw Exception('Storage not found');
|
|
// }
|
|
// }
|
|
|
|
// Future<void> clearAll(Storage storage) {
|
|
// switch (storage) {
|
|
// case Storage.SecureStorage:
|
|
// return SecureStorage.instance.clearAll();
|
|
// case Storage.SharedPreferences:
|
|
// return SharedPreferencesStorage.instance.clearAll();
|
|
// case Storage.SQLiteStorage:
|
|
// return SQLiteStorage.instance.clearAll();
|
|
// case Storage.LicenseStorage:
|
|
// return LicenseStorage.instance.clearAll();
|
|
// default:
|
|
// throw Exception('Storage not found');
|
|
// }
|
|
// }
|
|
}
|