react-native-nitro-screen-recorder
Version:
A library to capture screen recordings with react-native powered by NitroModules.
47 lines (46 loc) • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const config_plugins_1 = require("@expo/config-plugins");
const withBroadcastExtension_1 = require("./ios/withBroadcastExtension");
const withAndroidScreenRecording_1 = require("./android/withAndroidScreenRecording");
const validatePluginProps_1 = require("./support/validatePluginProps");
const pkg = require('../../../package.json');
const CAMERA_USAGE = 'Allow $(PRODUCT_NAME) to access your camera';
const MICROPHONE_USAGE = 'Allow $(PRODUCT_NAME) to access your microphone';
const withScreenRecorder = (config, props = {}) => {
(0, validatePluginProps_1.validatePluginProps)(props);
/*---------------IOS-------------------- */
if (config.ios == null)
config.ios = {};
if (config.ios.infoPlist == null)
config.ios.infoPlist = {};
if (props.enableCameraPermission === true) {
config.ios.infoPlist.NSCameraUsageDescription =
props.cameraPermissionText ??
config.ios.infoPlist.NSCameraUsageDescription ??
CAMERA_USAGE;
}
if (props.enableMicrophonePermission === true) {
config.ios.infoPlist.NSMicrophoneUsageDescription =
props.microphonePermissionText ??
config.ios.infoPlist.NSMicrophoneUsageDescription ??
MICROPHONE_USAGE;
}
config = (0, withBroadcastExtension_1.withBroadcastExtension)(config, props);
/*---------------ANDROID-------------------- */
const androidPermissions = [
// already conditionally added
...(props.enableMicrophonePermission !== false
? ['android.permission.RECORD_AUDIO']
: []),
'android.permission.FOREGROUND_SERVICE',
'android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION',
'android.permission.POST_NOTIFICATIONS',
];
return (0, config_plugins_1.withPlugins)(config, [
// Android plugins
[config_plugins_1.AndroidConfig.Permissions.withPermissions, androidPermissions],
[withAndroidScreenRecording_1.withAndroidScreenRecording, props],
]);
};
exports.default = (0, config_plugins_1.createRunOncePlugin)(withScreenRecorder, pkg.name, pkg.version);