restoreSession method

Future<bool> restoreSession()

Restores user session from persistent storage on application startup.

Returns true if a valid persisted session was found and restored.

Example:

final hasSession = await auth.restoreSession();

Implementation

Future<bool> restoreSession() async {
  if (storage == null || fromJson == null) return false;

  try {
    final raw = await storage!.read(sessionKey);
    if (raw == null || raw.isEmpty) return false;

    final decoded = jsonDecode(raw) as Map<String, dynamic>;
    final tokenStr = decoded['token'] as String?;
    final userData = decoded['user'] as Map<String, dynamic>?;

    if (tokenStr != null && userData != null) {
      _token.value = tokenStr;
      _currentUser.value = fromJson!(userData);
      logger.info('BloomAuth: Restored session from storage (hasUser: ${_currentUser.value != null})');
      return true;
    }
  } catch (e) {
    logger.error('BloomAuth: Failed to restore session from storage: $e');
  }
  return false;
}