UNPKG

react-native-screenshot-aware

Version:

React Native module for real-time screenshot detection on Android and iOS

48 lines (44 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _configPlugins = require("@expo/config-plugins"); /** * Modifies the `AndroidManifest.xml` file to add `DETECT_SCREEN_CAPTURE` permission, * allowing the app to detect screen capture. * * @param {ConfigPlugin} config - The Expo configuration object. * @returns {ConfigPlugin} - The modified Expo configuration. */ const withCustomAndroidManifest = config => { return (0, _configPlugins.withAndroidManifest)(config, config => { const androidManifest = config.modResults; if (!androidManifest.manifest["uses-permission"]) { androidManifest.manifest["uses-permission"] = []; } // Check if the permission already exists const permissionExists = androidManifest.manifest["uses-permission"].some(permission => permission.$?.["android:name"] === "android.permission.DETECT_SCREEN_CAPTURE"); // Only add the permission if it doesn't already exist if (!permissionExists) { androidManifest.manifest["uses-permission"].push({ $: { "android:name": "android.permission.DETECT_SCREEN_CAPTURE" } }); } return config; }); }; /** * Applies `withCustomAndroidManifest` * to enable screenshot detection on Android. * * @param {ConfigPlugin} config - The Expo configuration object. * @returns {ConfigPlugin} - The modified Expo configuration. */ const withReactNativeScreenshotAware = config => { return withCustomAndroidManifest(config); }; var _default = exports.default = withReactNativeScreenshotAware; //# sourceMappingURL=withReactNativeScreenshotAware.js.map