1082815dcSEvan Baconimport { ExpoConfig } from '@expo/config-types'; 2082815dcSEvan Bacon 3082815dcSEvan Baconimport { 4082815dcSEvan Bacon addMetaDataItemToMainApplication, 5082815dcSEvan Bacon addUsesLibraryItemToMainApplication, 6082815dcSEvan Bacon AndroidManifest, 7082815dcSEvan Bacon getMainApplicationOrThrow, 8082815dcSEvan Bacon removeMetaDataItemFromMainApplication, 9082815dcSEvan Bacon removeUsesLibraryItemFromMainApplication, 10082815dcSEvan Bacon} from './Manifest'; 11*8a424bebSJames Ideimport { createAndroidManifestPlugin } from '../plugins/android-plugins'; 12082815dcSEvan Bacon 13082815dcSEvan Baconconst META_API_KEY = 'com.google.android.geo.API_KEY'; 14082815dcSEvan Baconconst LIB_HTTP = 'org.apache.http.legacy'; 15082815dcSEvan Bacon 16082815dcSEvan Baconexport const withGoogleMapsApiKey = createAndroidManifestPlugin( 17082815dcSEvan Bacon setGoogleMapsApiKey, 18082815dcSEvan Bacon 'withGoogleMapsApiKey' 19082815dcSEvan Bacon); 20082815dcSEvan Bacon 21082815dcSEvan Baconexport function getGoogleMapsApiKey(config: Pick<ExpoConfig, 'android'>) { 22082815dcSEvan Bacon return config.android?.config?.googleMaps?.apiKey ?? null; 23082815dcSEvan Bacon} 24082815dcSEvan Bacon 25082815dcSEvan Baconexport function setGoogleMapsApiKey( 26082815dcSEvan Bacon config: Pick<ExpoConfig, 'android'>, 27082815dcSEvan Bacon androidManifest: AndroidManifest 28082815dcSEvan Bacon) { 29082815dcSEvan Bacon const apiKey = getGoogleMapsApiKey(config); 30082815dcSEvan Bacon const mainApplication = getMainApplicationOrThrow(androidManifest); 31082815dcSEvan Bacon 32082815dcSEvan Bacon if (apiKey) { 33082815dcSEvan Bacon // If the item exists, add it back 34082815dcSEvan Bacon addMetaDataItemToMainApplication(mainApplication, META_API_KEY, apiKey); 35082815dcSEvan Bacon addUsesLibraryItemToMainApplication(mainApplication, { 36082815dcSEvan Bacon name: LIB_HTTP, 37082815dcSEvan Bacon required: false, 38082815dcSEvan Bacon }); 39082815dcSEvan Bacon } else { 40082815dcSEvan Bacon // Remove any existing item 41082815dcSEvan Bacon removeMetaDataItemFromMainApplication(mainApplication, META_API_KEY); 42082815dcSEvan Bacon removeUsesLibraryItemFromMainApplication(mainApplication, LIB_HTTP); 43082815dcSEvan Bacon } 44082815dcSEvan Bacon 45082815dcSEvan Bacon return androidManifest; 46082815dcSEvan Bacon} 47