/** * Plugin local: injeta o intent filter do Google OAuth no AndroidManifest.xml * durante o `expo prebuild`. * * expo-auth-session v5+ usa ${Application.applicationId}:/oauthredirect como * redirect URI nativo (ex: com.meowspool.app:/oauthredirect). * Sem esse intent filter, o Android não intercepta o redirect e o Chrome * trata a URL como pesquisa, redirecionando para o google.com. */ const { withAndroidManifest } = require("@expo/config-plugins"); // Scheme gerado por expo-auth-session v7: applicationId do app const APP_SCHEME = "com.meowspool.app"; module.exports = function withGoogleOAuth(config) { return withAndroidManifest(config, (config) => { const manifest = config.modResults; const activities = manifest.manifest.application?.[0]?.activity ?? []; const mainActivity = activities.find( (a) => a.$?.["android:name"] === ".MainActivity", ); if (!mainActivity) return config; // Evita duplicar o intent filter em rebuilds consecutivos const alreadyAdded = (mainActivity["intent-filter"] ?? []).some((filter) => (filter.data ?? []).some( (d) => d.$?.["android:scheme"] === APP_SCHEME, ), ); if (alreadyAdded) return config; mainActivity["intent-filter"] = [ ...(mainActivity["intent-filter"] ?? []), { action: [{ $: { "android:name": "android.intent.action.VIEW" } }], category: [ { $: { "android:name": "android.intent.category.DEFAULT" } }, { $: { "android:name": "android.intent.category.BROWSABLE" } }, ], data: [{ $: { "android:scheme": APP_SCHEME } }], }, ]; return config; }); };