cleanUpCustomFields static method

String cleanUpCustomFields(
  1. String queryTemplate,
  2. Map<String, List> customFieldsConfig
)

Implementation

static String cleanUpCustomFields(
    String queryTemplate, Map<String, List<dynamic>> customFieldsConfig) {
  queryTemplate = queryTemplate.replaceAll(
      RegExp(r'fragment\s+\w+CustomFields\s+on\s+\w+\s*\{[^}]*\}',
          multiLine: true),
      '');

  queryTemplate = queryTemplate.replaceAll(
      RegExp(r'\.\.\.\w+CustomFields\s*', multiLine: true), '');

  customFieldsConfig.forEach((typeName, customFields) {
    if (customFields.isNotEmpty) {
      String generatedFragment =
          generateFragmentWithTypename(typeName, customFields);

      queryTemplate += '\n\n$generatedFragment';

      queryTemplate = queryTemplate.replaceAllMapped(
          RegExp(r'(\b' + typeName + r'\b)(\s*\{)', multiLine: true),
          (match) =>
              '${match.group(1)}${match.group(2)}\n  ...${typeName.capitalize()}CustomFields');
    }
  });

  queryTemplate = queryTemplate
      .replaceAll(RegExp(r'\n\s*\n', multiLine: true), '\n')
      .trim();

  return queryTemplate;
}