import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract class TokenStorage { static SharedPreferences? _cachedPrefs; static Future _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 haveTokenInStorage() async { try { final sharedPreferences = await _getPrefs(); if (sharedPreferences.getString('token') == null) { return false; } else { return true; } } catch (e) { return false; } } static Future getTokenFromStorage() async { final sharedPreferences = await _getPrefs(); return sharedPreferences.getString('token'); } static Future saveTokenInStorage(String token) async { final sharedPreferences = await _getPrefs(); await sharedPreferences.setString('token', token); } static Future removeTokenInStorage() async { final sharedPreferences = await _getPrefs(); await sharedPreferences.remove('token'); } } abstract class SocketIdStorage { static Future haveSocketIdInStorage() async { try { final sharedPreferences = await TokenStorage._getPrefs(); if (sharedPreferences.getString('socketId') == null) { return false; } else { return true; } } catch (e) { return false; } } static Future getSocketIdFromStorage() async { final sharedPreferences = await TokenStorage._getPrefs(); return sharedPreferences.getString('socketId'); } static Future saveSocketIdInStorage(String socketId) async { final sharedPreferences = await TokenStorage._getPrefs(); await sharedPreferences.setString('socketId', socketId); } static Future removeSocketIdInStorage() async { final sharedPreferences = await TokenStorage._getPrefs(); await sharedPreferences.remove('socketId'); } }