import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SecureStorage {
final FlutterSecureStorage _storage = const FlutterSecureStorage();
Future<String?> read(String key) async {
return await _storage.read(key: key);
}
Future<Map<String, String>> readAll() async {
return await _storage.readAll();
}
Future<void> delete(String key) async {
await _storage.delete(key: key);
}
//We need to use shared preferences because they are cleared on uninstall unlike flutter secure storage
Future<void> clearKeychainValues() async {
final prefs = await SharedPreferences.getInstance();
if (prefs.getBool('is_first_app_launch') ?? true) {
await _storage.deleteAll();
await prefs.setBool('is_first_app_launch', false);
}
}
Future<void> deleteAll() async {
await _storage.deleteAll();
}
Future<void> write(String key, String value) async {
await _storage.write(key: key, value: value);
}
}
class ComwellPreferences {
late final SharedPreferences _sharedPreferences;
Future<void> init() async {
_sharedPreferences = await SharedPreferences.getInstance();
}
bool get isLoggedIn => _sharedPreferences.getBool(_keyIsLoggedIn) ?? false;
Future<void> setIsLoggedIn(bool isLoggedIn) async {
await _sharedPreferences.setBool(_keyIsLoggedIn, isLoggedIn);
}
bool get onboardingHasSeenBluetooth =>
_sharedPreferences.getBool(_keyOnboardingHasSeenBluetooth) ?? false;
Future<void> setOnboardingHasSeenBluetooth() async {
await _sharedPreferences.setBool(_keyOnboardingHasSeenBluetooth, true);
}
bool get onboardingHasSeenNotification =>
_sharedPreferences.getBool(_keyOnboardingHasSeenNotification) ?? false;
Future<void> setOnboardingHasSeenNotification() async {
await _sharedPreferences.setBool(_keyOnboardingHasSeenNotification, true);
}
bool get onboardingHasSeenUsageTracking =>
_sharedPreferences.getBool(_keyOnboardingHasSeenUsageTracking) ?? false;
Future<void> setOnboardingHasSeenUsageTracking() async {
await _sharedPreferences.setBool(_keyOnboardingHasSeenUsageTracking, true);
}
bool get allowUsageTracking => _sharedPreferences.getBool(_keyAllowUsageTracking) ?? false;
Future<void> setAllowUsageTracking(bool allow) async {
await _sharedPreferences.setBool(_keyAllowUsageTracking, allow);
}
Future<void> clear() async {
await _sharedPreferences.clear();
}
Future<void> setUserAgent(String userAgent) async {
await _sharedPreferences.setString(_keyUserAgent, userAgent);
}
String get userAgent => _sharedPreferences.getString(_keyUserAgent) ?? '';
static const _keyUserAgent = "user_agent";
static const _keyOnboardingHasSeenBluetooth = "_keyOnboardingHasSeenBluetooth";
static const _keyOnboardingHasSeenNotification = "_keyOnboardingHasSeenNotification";
static const _keyOnboardingHasSeenUsageTracking = "_keyOnboardingHasSeenUsageTracking";
static const _keyAllowUsageTracking = "_keyAllowUsageTracking";
static const _keyIsLoggedIn = "_keyIsLoggedIn";
}