UNPKG

@criipto/verify-expo

Version:

Accept MitID, NemID, Swedish BankID, Norwegian BankID and more logins in your Expo (React-Native) app

77 lines (71 loc) 2.37 kB
const withAndroidManifest = require("expo/config-plugins").withAndroidManifest; const modifier = (config, options) => { options = options || {}; const androidPackage = config.android?.package; const criiptoDomain = process.env.CRIIPTO_DOMAIN ?? options?.domain; const androidAppLinks = (options?.androidAppLinks ?? []).concat( criiptoDomain && androidPackage ? [`https://${criiptoDomain}/android/${androidPackage}/callback`] : [], ); return withAndroidManifest(config, (config) => { const application = config.modResults.manifest.application.find( (s) => s.$["android:name"] === ".MainApplication", ); if (!application) throw new Error("Unable to find MainApplication in manifest"); if (!androidAppLinks.length) return config; const criiptoVerifyActivity = { $: { "android:name": "expo.modules.criiptoverify.CriiptoVerifyActivity", "android:exported": "true", "android:launchMode": "singleTop", }, }; const redirectUriReceiverActivity = { $: { "android:name": "expo.modules.criiptoverify.RedirectUriReceiverActivity", "android:exported": "true", "android:launchMode": "singleTop", }, "intent-filter": androidAppLinks.map((href) => ({ $: { "android:autoVerify": "true", "data-generated": "true", }, action: { $: { "android:name": "android.intent.action.VIEW", }, }, data: { $: { "android:scheme": "https", "android:host": new URL(href).host, "android:pathPrefix": new URL(href).pathname, }, }, category: [ { $: { "android:name": "android.intent.category.BROWSABLE", }, }, { $: { "android:name": "android.intent.category.DEFAULT", }, }, ], })), }; application.activity = application.activity .filter( (s) => s["$"]["android:name"] !== criiptoVerifyActivity["$"]["android:name"] && s["$"]["android:name"] !== redirectUriReceiverActivity["$"]["android:name"], ) .concat([criiptoVerifyActivity, redirectUriReceiverActivity]); return config; }); }; module.exports = modifier;