import { ConfigPlugin, WarningAggregator, withAndroidManifest } from '@expo/config-plugins';
import { ScanbotConfigPlugin } from './pluginTypes';

export const withLargeHeap: ConfigPlugin<Pick<ScanbotConfigPlugin, 'largeHeap'>> = (
  config,
  { largeHeap } = {}
) => {
  if (largeHeap) {
    config = withAndroidManifest(config, (prop) => {
      const { manifest } = prop.modResults;
      const attributes = manifest.application?.find((item) => item.$);

      if (attributes) {
        attributes.$['android:largeHeap'] = 'true';
      } else {
        WarningAggregator.addWarningAndroid(
          'react-native-scanbot-sdk',
          'Could not add android:largeHeap to Android Manifest'
        );
      }

      return prop;
    });
  }

  return config;
};
