Files
eatvio_app/lib/core/token_storage.dart

77 lines
2.1 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
abstract class TokenStorage {
static SharedPreferences? _cachedPrefs;
static Future<SharedPreferences> _getPrefs() async {
_cachedPrefs ??= await SharedPreferences.getInstance();
return _cachedPrefs!;
}
/// Clears the cached SharedPreferences instance.
/// This is primarily used for testing to ensure fresh state between tests.
@visibleForTesting
static void clearCache() {
_cachedPrefs = null;
}
static Future<bool> haveTokenInStorage() async {
try {
final sharedPreferences = await _getPrefs();
if (sharedPreferences.getString('token') == null) {
return false;
} else {
return true;
}
} catch (e) {
return false;
}
}
static Future<String?> getTokenFromStorage() async {
final sharedPreferences = await _getPrefs();
return sharedPreferences.getString('token');
}
static Future<void> saveTokenInStorage(String token) async {
final sharedPreferences = await _getPrefs();
await sharedPreferences.setString('token', token);
}
static Future<void> removeTokenInStorage() async {
final sharedPreferences = await _getPrefs();
await sharedPreferences.remove('token');
}
}
abstract class SocketIdStorage {
static Future<bool> haveSocketIdInStorage() async {
try {
final sharedPreferences = await TokenStorage._getPrefs();
if (sharedPreferences.getString('socketId') == null) {
return false;
} else {
return true;
}
} catch (e) {
return false;
}
}
static Future<String?> getSocketIdFromStorage() async {
final sharedPreferences = await TokenStorage._getPrefs();
return sharedPreferences.getString('socketId');
}
static Future<void> saveSocketIdInStorage(String socketId) async {
final sharedPreferences = await TokenStorage._getPrefs();
await sharedPreferences.setString('socketId', socketId);
}
static Future<void> removeSocketIdInStorage() async {
final sharedPreferences = await TokenStorage._getPrefs();
await sharedPreferences.remove('socketId');
}
}