UNPKG

expo-mercadopago-integration

Version:

Expo library for integrating Mercado Pago native SDK without ejecting

90 lines (71 loc) 2.54 kB
const { withAndroidManifest, withInfoPlist } = require('@expo/config-plugins'); const withMercadoPago = (config, { publicKey, siteId = 'MLA' } = {}) => { if (!publicKey) { throw new Error('MercadoPago: publicKey is required in plugin configuration'); } // Android configuration config = withAndroidManifest(config, (config) => { const { manifest } = config.modResults; // Add permissions if (!manifest['uses-permission']) { manifest['uses-permission'] = []; } const permissions = [ 'android.permission.INTERNET', 'android.permission.ACCESS_NETWORK_STATE' ]; permissions.forEach(permission => { if (!manifest['uses-permission'].find(p => p.$['android:name'] === permission)) { manifest['uses-permission'].push({ $: { 'android:name': permission } }); } }); // Add MercadoPago activity if (!manifest.application) { manifest.application = [{}]; } if (!manifest.application[0].activity) { manifest.application[0].activity = []; } const mercadoPagoActivity = { $: { 'android:name': 'com.mercadopago.android.px.core.MercadoPagoCheckout$Activity', 'android:exported': 'false', 'android:theme': '@style/Theme.AppCompat.Light.NoActionBar' } }; if (!manifest.application[0].activity.find(a => a.$['android:name'] === mercadoPagoActivity.$['android:name'])) { manifest.application[0].activity.push(mercadoPagoActivity); } return config; }); // iOS configuration config = withInfoPlist(config, (config) => { const { modResults } = config; // Add URL schemes for MercadoPago if (!modResults.CFBundleURLTypes) { modResults.CFBundleURLTypes = []; } const mercadoPagoURLScheme = { CFBundleURLName: 'MercadoPago', CFBundleURLSchemes: [`mp-${publicKey}`] }; if (!modResults.CFBundleURLTypes.find(scheme => scheme.CFBundleURLName === 'MercadoPago')) { modResults.CFBundleURLTypes.push(mercadoPagoURLScheme); } // Add LSApplicationQueriesSchemes for MercadoPago app if (!modResults.LSApplicationQueriesSchemes) { modResults.LSApplicationQueriesSchemes = []; } const mercadoPagoAppScheme = 'mercadopago'; if (!modResults.LSApplicationQueriesSchemes.includes(mercadoPagoAppScheme)) { modResults.LSApplicationQueriesSchemes.push(mercadoPagoAppScheme); } return config; }); return config; }; module.exports = withMercadoPago;