1import { AndroidConfig, ConfigPlugin, createRunOncePlugin } from 'expo/config-plugins';
2
3const pkg = require('expo-barcode-scanner/package.json');
4
5const CAMERA_USAGE = 'Allow $(PRODUCT_NAME) to access your camera';
6const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone';
7
8const withBarcodeScanner: ConfigPlugin<
9  {
10    microphonePermission?: string;
11    cameraPermission?: string;
12  } | void
13> = (config, { microphonePermission, cameraPermission } = {}) => {
14  if (!config.ios) config.ios = {};
15  if (!config.ios.infoPlist) config.ios.infoPlist = {};
16  config.ios.infoPlist.NSCameraUsageDescription =
17    cameraPermission || config.ios.infoPlist.NSCameraUsageDescription || CAMERA_USAGE;
18  config.ios.infoPlist.NSMicrophoneUsageDescription =
19    microphonePermission || config.ios.infoPlist.NSMicrophoneUsageDescription || MICROPHONE_USAGE;
20
21  return AndroidConfig.Permissions.withPermissions(config, ['android.permission.CAMERA']);
22};
23
24export default createRunOncePlugin(withBarcodeScanner, pkg.name, pkg.version);
25