UNPKG

expo-pngme-sdk

Version:

Module for Pngme partners to build credit score from phone information

78 lines (72 loc) 2.72 kB
const { withAndroidManifest, withAppBuildGradle, withProjectBuildGradle, createRunOncePlugin, } = require('@expo/config-plugins'); // This function adds the required Android permissions const withPngmePermissions = (config) => { return withAndroidManifest(config, async (config) => { let androidManifest = config.modResults; if (!Array.isArray(androidManifest.manifest['uses-permission'])) { androidManifest.manifest['uses-permission'] = []; } const requiredPermissions = [ 'android.permission.INTERNET', 'android.permission.READ_SMS', 'android.permission.RECEIVE_SMS', ]; requiredPermissions.forEach((permission) => { if (!androidManifest.manifest['uses-permission'].some((item) => item.$['android:name'] === permission)) { androidManifest.manifest['uses-permission'].push({ $: { 'android:name': permission }, }); } }); return config; }); }; // This function updates the Java version compatibility in the consumer's app const withPngmeAppGradle = (config) => { return withAppBuildGradle(config, (config) => { if (config.modResults.language === 'groovy') { config.modResults.contents = config.modResults.contents.replace( /JavaVersion\.VERSION_1_8/g, 'JavaVersion.VERSION_17' ); config.modResults.contents = config.modResults.contents.replace( /jvmTarget = '1.8'/g, "jvmTarget = '17'" ); } return config; }); }; // This function adds the SDK version to the root project's build.gradle const withPngmeProjectGradle = (config, pngmeAndroidSdk) => { return withProjectBuildGradle(config, (config) => { if (config.modResults.language === 'groovy') { // Ensure the ext block exists if (!/ext\s*{/.test(config.modResults.contents)) { config.modResults.contents = `ext {}\n${config.modResults.contents}`; } // Add the pngmeAndroidSdkVersion property if it doesn't exist if (!config.modResults.contents.includes('pngmeAndroidSdkVersion =')) { config.modResults.contents = config.modResults.contents.replace( /ext\s*{/, `ext {\n pngmeAndroidSdkVersion = "${pngmeAndroidSdk}"` ); } } return config; }); }; const withPngme = (config, props) => { const { pngmeAndroidSdk = 'v7.0.6' } = props || {}; config = withPngmePermissions(config); config = withPngmeAppGradle(config); // For Java version in app config = withPngmeProjectGradle(config, pngmeAndroidSdk); // For SDK version return config; }; const pkg = require('./package.json'); module.exports = createRunOncePlugin(withPngme, pkg.name, pkg.version);