react-native-screenshot-aware
Version:
React Native module for real-time screenshot detection on Android and iOS
48 lines (44 loc) • 1.66 kB
JavaScript
;
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