UNPKG

opentok-react-native

Version:
62 lines (61 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const config_plugins_1 = require("@expo/config-plugins"); /** * Add iOS Info.plist entries for camera and microphone permissions */ const withIosPermissions = (config, props) => { const { cameraPermission = 'Allow $(PRODUCT_NAME) to access your camera for video calls', microphonePermission = 'Allow $(PRODUCT_NAME) to access your microphone for audio calls', } = props; return (0, config_plugins_1.withInfoPlist)(config, (config) => { config.modResults.NSCameraUsageDescription = cameraPermission; config.modResults.NSMicrophoneUsageDescription = microphonePermission; return config; }); }; /** * Add Android permissions to AndroidManifest.xml */ const withAndroidPermissions = (config) => { return (0, config_plugins_1.withAndroidManifest)(config, (config) => { const permissions = [ 'android.permission.BLUETOOTH', 'android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS', 'android.permission.BLUETOOTH_CONNECT', 'android.permission.BROADCAST_STICKY', 'android.permission.CAMERA', 'android.permission.INTERNET', 'android.permission.MODIFY_AUDIO_SETTINGS', 'android.permission.READ_PHONE_STATE', 'android.permission.RECORD_AUDIO', 'android.permission.ACCESS_NETWORK_STATE', ]; permissions.forEach((permission) => { config_plugins_1.AndroidConfig.Permissions.addPermission(config.modResults, permission); }); // Add hardware feature for camera (non-required) if (!config.modResults.manifest['uses-feature']) { config.modResults.manifest['uses-feature'] = []; } const cameraFeatureExists = config.modResults.manifest['uses-feature'].some((feature) => feature.$['android:name'] === 'android.hardware.camera'); if (!cameraFeatureExists) { config.modResults.manifest['uses-feature'].push({ $: { 'android:name': 'android.hardware.camera', 'android:required': 'false', }, }); } return config; }); }; /** * Main Expo Config Plugin for opentok-react-native * Automatically configures native permissions and dependencies */ const withOpentok = (config, props = {}) => { return (0, config_plugins_1.withPlugins)(config, [ [withIosPermissions, props], withAndroidPermissions, ]); }; exports.default = withOpentok;