import 'dart:convert'; import 'package:e_scan/backend/schema/user/user_struct.dart'; import 'package:e_scan/services/secure_storage.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; final tokenProvider = Provider((ref) { final storage = ref.watch(sharedPrefsProvider); return TokenProvider(storage); }); class TokenProvider { TokenProvider(this._storage); final FlutterSecureStorage _storage; static const String tokenKey = "tokenKey"; static const String sessionIdKey = "sessionIdKey"; static const String refreshTokenKey = "refreshTokenKey"; Future setToken(String token) async { return _storage.write(key: tokenKey, value: token); } Future setSessionId(String sessionId) async { return _storage.write(key: sessionIdKey, value: sessionId); } Future setRefreshToken(String token) async { return _storage.write(key: refreshTokenKey, value: token); } // Method to get the token from secure storage and check if it's expired Future getToken() async { final token = await _storage.read(key: tokenKey); debugPrint("Token expired: $token"); return token; } Future getSessionId() async { final value = await _storage.read(key: sessionIdKey); return value; } Future getRefreshToken() async { final refreshToken = await _storage.read(key: refreshTokenKey); debugPrint("Refresh token: $refreshToken"); return refreshToken; } // Method to delete the token from secure storage Future deleteToken() async { await _storage.delete(key: tokenKey); await _storage.delete(key: refreshTokenKey); await _storage.delete(key: sessionIdKey); } } final userConnectedProvider = Provider((ref) { final storage = ref.watch(sharedPrefsProvider); return UserConnectedProvider(storage); }); class UserConnectedProvider { UserConnectedProvider(this._storage); final FlutterSecureStorage _storage; static const String key = "userConnectedKey"; Future set(UserStruct user) async { return _storage.write(key: key, value: jsonEncode(user.toJson())); } // Method to get the token from secure storage and check if it's expired Future get() async { final res = await _storage.read(key: key); if (res == null) { return null; } else { return UserStruct.fromJson(jsonDecode(res)); } } // Method to delete the token from secure storage Future delete() async { await _storage.delete(key: key); } }