class SessionResponse { SessionResponse({ required this.accessToken, required this.refreshToken, required this.expiresIn, required this.tokenType, required this.userId, required this.userEmail, }); final String accessToken; final String refreshToken; final int expiresIn; final String tokenType; final String userId; final String userEmail; factory SessionResponse.fromJson(Map json) { final user = (json['user'] as Map?) ?? {}; final accessToken = json['access_token'] as String?; final refreshToken = json['refresh_token'] as String?; final expiresIn = json['expires_in'] as int?; final tokenType = json['token_type'] as String?; final userId = user['id'] as String?; final userEmail = user['email'] as String?; if (accessToken == null || refreshToken == null || expiresIn == null || tokenType == null || userId == null || userEmail == null) { throw const FormatException('Invalid session response payload'); } return SessionResponse( accessToken: accessToken, refreshToken: refreshToken, expiresIn: expiresIn, tokenType: tokenType, userId: userId, userEmail: userEmail, ); } }