UserInfo.fromJson constructor

UserInfo.fromJson(
  1. Map<String, dynamic> json
)

Creates a UserInfo from JSON response

Implementation

factory UserInfo.fromJson(Map<String, dynamic> json) {
  // Extract known fields
  final knownFields = {
    'sub', 'email', 'name', 'given_name', 'family_name',
    'picture', 'preferred_username', 'email_verified',
    'locale', 'zoneinfo', 'updated_at'
  };

  // Collect additional data
  final additionalData = <String, dynamic>{};
  for (final entry in json.entries) {
    if (!knownFields.contains(entry.key)) {
      additionalData[entry.key] = entry.value;
    }
  }

  return UserInfo(
    userId: json['sub'] as String,
    email: json['email'] as String,
    fullName: json['name'] as String,
    firstName: json['given_name'] as String?,
    lastName: json['family_name'] as String?,
    profileImage: json['picture'] as String?,
    username: json['preferred_username'] as String?,
    emailVerified: json['email_verified'] as bool?,
    locale: json['locale'] as String?,
    zoneinfo: json['zoneinfo'] as String?,
    updatedAt: json['updated_at'] != null
        ? DateTime.parse(json['updated_at'] as String)
        : null,
    additionalData: additionalData,
  );
}