normalizeMutationData static method

dynamic normalizeMutationData(
  1. dynamic data, {
  2. String? parentKey,
  3. bool? convertEnums,
})

Implementation

static dynamic normalizeMutationData(dynamic data,
    {String? parentKey, bool? convertEnums}) {
  convertEnums = convertEnums ?? convertMutationEnums;

  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;

      final enumType = _fieldToEnumType[key];
      if (convertEnums &&
          enumType != null &&
          _knownEnumTypes.contains(enumType)) {
        if (value is List) {
          normalizedData[key] = value
              .map((item) =>
                  item is String ? _convertEnumToGraphQLFormat(item) : item)
              .toList();
          continue;
        } else if (value is String) {
          normalizedData[key] = _convertEnumToGraphQLFormat(value);
          continue;
        }
      }

      if (convertEnums && value is String) {
        if (value == 'asc' || value == 'desc') {
          normalizedData[key] = value.toUpperCase();
          continue;
        }
      }

      normalizedData[key] = normalizeMutationData(value,
          parentKey: key, convertEnums: convertEnums);
    }
    return normalizedData;
  }

  if (data is List) {
    final enumType = parentKey != null ? _fieldToEnumType[parentKey] : null;
    if (convertEnums &&
        enumType != null &&
        _knownEnumTypes.contains(enumType)) {
      return data
          .map((item) =>
              item is String ? _convertEnumToGraphQLFormat(item) : item)
          .toList();
    }
    return data
        .map(
            (item) => normalizeMutationData(item, convertEnums: convertEnums))
        .toList();
  }

  return data;
}