UNPKG

@passageidentity/passage-react-native

Version:

Passkey Complete for React Native - Go completely passwordless with a standalone auth solution in your React Native app with Passage by 1Password

96 lines (95 loc) 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _configPlugins = require("@expo/config-plugins"); const getIntentFilter = packageName => { return { $: { 'android:autoVerify': 'true' }, action: [{ $: { 'android:name': 'android.intent.action.VIEW' } }], category: [{ $: { 'android:name': 'android.intent.category.DEFAULT' } }, { $: { 'android:name': 'android.intent.category.BROWSABLE' } }], data: [{ $: { 'android:scheme': 'http' } }, { $: { 'android:scheme': 'https' } }, { $: { 'android:host': '@string/passage_auth_origin' } }, { $: { 'android:pathPrefix': `/android/${packageName}` } }] }; }; const modifyAndroidManifest = configuration => { console.log('Passage: Checking Android Manifest for required settings.'); const packageName = _configPlugins.AndroidConfig.Package.getPackage(configuration); if (!packageName) { console.warn('Passage: Could not retrieve the package name from build.gradle. Skipping manifest modification'); return configuration; } return (0, _configPlugins.withAndroidManifest)(configuration, async config => { const application = config.modResults.manifest.application?.[0]; if (!application) { console.warn('Passage: Could not retrieve manifest. Skipping manifest modification.'); return config; } if (!application['meta-data']) { application['meta-data'] = []; } const metaDataExists = application['meta-data'].some(metaData => metaData.$['android:name'] === 'asset_statements'); console.log('Passage: Checking Android Manifest for asset statements.'); if (!metaDataExists) { console.log('Passage: Adding asset_statements meta-data...'); application['meta-data'].push({ $: { 'android:name': 'asset_statements', 'android:resource': '@string/asset_statements' } }); } const newIntentFilter = getIntentFilter(packageName); const mainActivity = application.activity?.find(activity => activity.$['android:name'] === '.MainActivity'); console.log('Passage: Checking Android Manifest for intent filters.'); if (!mainActivity) { console.warn('Passage: Could not retrieve Main Activity xml. Skipping intent filter modification.'); return config; } if (!mainActivity['intent-filter']) { mainActivity['intent-filter'] = []; } const existingFilterIndex = mainActivity['intent-filter'].findIndex(filter => filter.data?.some(data => data.$['android:pathPrefix'] === `/android/${packageName}`)); if (existingFilterIndex === -1) { console.log('Passage: Adding new intent filter.'); mainActivity['intent-filter'].push(newIntentFilter); } else { console.log('Passage: Updating existing intent filter.'); mainActivity['intent-filter'][existingFilterIndex] = newIntentFilter; } console.log('Passage: Android Manifest check complete.'); return config; }); }; var _default = exports.default = modifyAndroidManifest; //# sourceMappingURL=modifyAndroidManifest.js.map