normalizeGraphQLData static method
dynamic
normalizeGraphQLData(
- dynamic data, {
- String? parentKey,
- bool? convertEnums,
})
Implementation
static dynamic normalizeGraphQLData(dynamic data,
{String? parentKey, bool? convertEnums}) {
convertEnums = convertEnums ?? convertQueryEnums;
if (data is Map) {
final map =
data is Map<String, dynamic> ? data : Map<String, dynamic>.from(data);
final normalizedData = <String, dynamic>{};
for (final entry in map.entries) {
final key = entry.key;
final value = entry.value;
if (key == '__typename') {
normalizedData['runtimeType'] =
value.toString()[0].toLowerCase() + value.toString().substring(1);
continue;
}
bool wasConverted = false;
// Only convert if explicitly mapped to a known enum type
if (convertEnums && value != null) {
final enumType = _fieldToEnumType[key];
if (enumType != null && _knownEnumTypes.contains(enumType)) {
if (value is List) {
normalizedData[key] = value
.map((item) => _convertEnumToDartFormat(item.toString()))
.toList();
wasConverted = true;
} else if (value is String) {
normalizedData[key] = _convertEnumToDartFormat(value);
wasConverted = true;
}
}
}
if (!wasConverted) {
normalizedData[key] = normalizeGraphQLData(value,
parentKey: key, convertEnums: convertEnums);
}
}
return normalizedData;
}
if (data is List) {
// Try to infer from parent key if it's a list of enums
final enumType = parentKey != null ? _fieldToEnumType[parentKey] : null;
if (convertEnums &&
enumType != null &&
_knownEnumTypes.contains(enumType)) {
return data
.map((item) => _convertEnumToDartFormat(item.toString()))
.toList();
}
return data
.map((item) => normalizeGraphQLData(item, convertEnums: convertEnums))
.toList();
}
return data;
}