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 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 g(String key) { return getInstanceByKey(key).get(key); } Future s(String key, String value) { return getInstanceByKey(key).set(key, value); } Future d(String key) { return getInstanceByKey(key).delete(key); } Future c(Storage storage) { return getInstance(storage).clearAll(); } // Future 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 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 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 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'); // } // } }