1082815dcSEvan Baconimport { ExpoConfig } from '@expo/config-types';
2082815dcSEvan Bacon
3082815dcSEvan Baconimport { InfoPlist } from './IosConfig.types';
4*8a424bebSJames Ideimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';
5082815dcSEvan Bacon
6082815dcSEvan Baconexport const withUsesNonExemptEncryption = createInfoPlistPluginWithPropertyGuard(
7082815dcSEvan Bacon  setUsesNonExemptEncryption,
8082815dcSEvan Bacon  {
9082815dcSEvan Bacon    infoPlistProperty: 'ITSAppUsesNonExemptEncryption',
10082815dcSEvan Bacon    expoConfigProperty: 'ios.config.usesNonExemptEncryption',
11082815dcSEvan Bacon  },
12082815dcSEvan Bacon  'withUsesNonExemptEncryption'
13082815dcSEvan Bacon);
14082815dcSEvan Bacon
15082815dcSEvan Baconexport function getUsesNonExemptEncryption(config: Pick<ExpoConfig, 'ios'>) {
16082815dcSEvan Bacon  return config?.ios?.config?.usesNonExemptEncryption ?? null;
17082815dcSEvan Bacon}
18082815dcSEvan Bacon
19082815dcSEvan Baconexport function setUsesNonExemptEncryption(
20082815dcSEvan Bacon  config: Pick<ExpoConfig, 'ios'>,
21082815dcSEvan Bacon  { ITSAppUsesNonExemptEncryption, ...infoPlist }: InfoPlist
22082815dcSEvan Bacon): InfoPlist {
23082815dcSEvan Bacon  const usesNonExemptEncryption = getUsesNonExemptEncryption(config);
24082815dcSEvan Bacon
25082815dcSEvan Bacon  // Make no changes if the key is left blank
26082815dcSEvan Bacon  if (usesNonExemptEncryption === null) {
27082815dcSEvan Bacon    return infoPlist;
28082815dcSEvan Bacon  }
29082815dcSEvan Bacon
30082815dcSEvan Bacon  return {
31082815dcSEvan Bacon    ...infoPlist,
32082815dcSEvan Bacon    ITSAppUsesNonExemptEncryption: usesNonExemptEncryption,
33082815dcSEvan Bacon  };
34082815dcSEvan Bacon}
35