1082815dcSEvan Baconimport { ExpoConfig } from '@expo/config-types'; 2082815dcSEvan Bacon 3082815dcSEvan Baconimport { AndroidManifest, getMainApplication, StringBoolean } from './Manifest'; 4*8a424bebSJames Ideimport { createAndroidManifestPlugin } from '../plugins/android-plugins'; 5082815dcSEvan Bacon 6082815dcSEvan Baconexport const withAllowBackup = createAndroidManifestPlugin(setAllowBackup, 'withAllowBackup'); 7082815dcSEvan Bacon 8082815dcSEvan Baconexport function getAllowBackup(config: Pick<ExpoConfig, 'android'>) { 9082815dcSEvan Bacon // Defaults to true. 10082815dcSEvan Bacon // https://docs.expo.dev/versions/latest/config/app/#allowbackup 11082815dcSEvan Bacon return config.android?.allowBackup ?? true; 12082815dcSEvan Bacon} 13082815dcSEvan Bacon 14082815dcSEvan Baconexport function setAllowBackup( 15082815dcSEvan Bacon config: Pick<ExpoConfig, 'android'>, 16082815dcSEvan Bacon androidManifest: AndroidManifest 17082815dcSEvan Bacon) { 18082815dcSEvan Bacon const allowBackup = getAllowBackup(config); 19082815dcSEvan Bacon 20082815dcSEvan Bacon const mainApplication = getMainApplication(androidManifest); 21082815dcSEvan Bacon if (mainApplication?.$) { 22082815dcSEvan Bacon mainApplication.$['android:allowBackup'] = String(allowBackup) as StringBoolean; 23082815dcSEvan Bacon } 24082815dcSEvan Bacon 25082815dcSEvan Bacon return androidManifest; 26082815dcSEvan Bacon} 27082815dcSEvan Bacon 28082815dcSEvan Baconexport function getAllowBackupFromManifest(androidManifest: AndroidManifest): boolean | null { 29082815dcSEvan Bacon const mainApplication = getMainApplication(androidManifest); 30082815dcSEvan Bacon 31082815dcSEvan Bacon if (mainApplication?.$) { 32082815dcSEvan Bacon return String(mainApplication.$['android:allowBackup']) === 'true'; 33082815dcSEvan Bacon } 34082815dcSEvan Bacon 35082815dcSEvan Bacon return null; 36082815dcSEvan Bacon} 37