implement staging workflow

This commit is contained in:
Kevin
2026-05-09 16:16:48 +08:00
parent f0e37c5e76
commit 175784292d
9 changed files with 157 additions and 61 deletions

View File

@@ -0,0 +1,32 @@
// @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;