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

export const withAndroidCameraPermission: ConfigPlugin<
  Pick<ScanbotConfigPlugin, 'androidCameraPermission'>
> = (config, { androidCameraPermission }) => {
  if (androidCameraPermission) {
    config = withAndroidManifest(config, (manifestProps) => {
      const { manifest } = manifestProps.modResults;
      const permissionKey = 'uses-permission';

      if (!Array.isArray(manifest[permissionKey])) {
        manifest[permissionKey] = [];
      }

      if (
        !manifest[permissionKey].find(
          (item) => item.$['android:name'] === 'android.permission.CAMERA'
        )
      ) {
        manifest[permissionKey].push({
          $: {
            'android:name': 'android.permission.CAMERA',
          },
        });
      }

      return manifestProps;
    });
  }

  return config;
};
