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