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;
}