UNPKG

expo-pngme-sdk

Version:

Expo SDK for Pngme financial insights - Android only, optimized for managed workflow

88 lines (71 loc) 2.48 kB
import { ConfigPlugin, withAndroidManifest, withAppBuildGradle, } from '@expo/config-plugins'; export interface PngmePluginProps { pngmeSdkVersion?: string; pngmeMavenUrl?: string; } /** * Add Pngme SDK repository and dependencies to Android project */ const withPngmeAndroid: ConfigPlugin<PngmePluginProps> = (config, props = {}) => { const PNGME_MAVEN_URL = props.pngmeMavenUrl || 'https://jitpack.io'; const PNGME_SDK_VERSION = props.pngmeSdkVersion || '7.0.6'; // Add permissions to AndroidManifest.xml config = withAndroidManifest(config, async (config) => { const manifest = config.modResults; // Ensure permissions array exists if (!manifest.manifest.permission) { manifest.manifest.permission = []; } const requiredPermissions = [ 'android.permission.READ_SMS', 'android.permission.INTERNET', 'android.permission.ACCESS_NETWORK_STATE', ]; requiredPermissions.forEach((permission) => { const exists = manifest.manifest.permission?.some( (p: any) => p.$?.['android:name'] === permission ); if (!exists) { manifest.manifest.permission?.push({ $: { 'android:name': permission, }, }); } }); return config; }); // Add repository and dependencies to app/build.gradle config = withAppBuildGradle(config, (config) => { let buildGradle = config.modResults.contents; // Add repository if not exists if (!buildGradle.includes(PNGME_MAVEN_URL)) { const repoPattern = /repositories\s*\{/; const repoReplacement = `repositories { maven { url '${PNGME_MAVEN_URL}' }`; buildGradle = buildGradle.replace(repoPattern, repoReplacement); } // Add Pngme SDK dependency if not exists if (!buildGradle.includes('com.pngme:pngme-sdk')) { const depPattern = /dependencies\s*\{/; const depReplacement = `dependencies { implementation 'com.pngme:pngme-sdk:${PNGME_SDK_VERSION}'`; buildGradle = buildGradle.replace(depPattern, depReplacement); } config.modResults.contents = buildGradle; return config; }); return config; }; /** * Expo config plugin for Pngme SDK * Automatically configures Android permissions and dependencies */ const withPngme: ConfigPlugin<PngmePluginProps | void> = (config, props) => { return withPngmeAndroid(config, props || {}); }; export default withPngme;