// @ts-check /** * Toggle Android cleartext HTTP traffic from Expo env. * * Staging may use an IP:port HTTP endpoint while production remains HTTPS. */ const { withAndroidManifest } = require('@expo/config-plugins'); /** * @param {import('expo/config').ExpoConfig} config * @param {{ enabled?: boolean }} props */ function withAndroidCleartextTraffic(config, props = {}) { return withAndroidManifest(config, (mod) => { const mainApplication = mod.modResults.manifest.application?.[0]; if (!mainApplication) { throw new Error( '[withAndroidCleartextTraffic] Main application not found in AndroidManifest.xml.', ); } mainApplication.$ = mainApplication.$ ?? {}; mainApplication.$['android:usesCleartextTraffic'] = props.enabled ? 'true' : 'false'; return mod; }); } module.exports = withAndroidCleartextTraffic;