1import { ExpoConfig } from '@expo/config-types'; 2 3import { createAndroidManifestPlugin } from '../plugins/android-plugins'; 4import { AndroidManifest, getMainApplication, StringBoolean } from './Manifest'; 5 6export const withAllowBackup = createAndroidManifestPlugin(setAllowBackup, 'withAllowBackup'); 7 8export function getAllowBackup(config: Pick<ExpoConfig, 'android'>) { 9 // Defaults to true. 10 // https://docs.expo.dev/versions/latest/config/app/#allowbackup 11 return config.android?.allowBackup ?? true; 12} 13 14export function setAllowBackup( 15 config: Pick<ExpoConfig, 'android'>, 16 androidManifest: AndroidManifest 17) { 18 const allowBackup = getAllowBackup(config); 19 20 const mainApplication = getMainApplication(androidManifest); 21 if (mainApplication?.$) { 22 mainApplication.$['android:allowBackup'] = String(allowBackup) as StringBoolean; 23 } 24 25 return androidManifest; 26} 27 28export function getAllowBackupFromManifest(androidManifest: AndroidManifest): boolean | null { 29 const mainApplication = getMainApplication(androidManifest); 30 31 if (mainApplication?.$) { 32 return String(mainApplication.$['android:allowBackup']) === 'true'; 33 } 34 35 return null; 36} 37