feat: Expo support (#260)
* Create `withVisionCamera` plugin * Add docs for setting up Expo * Update SETUP.mdx * Update app.config.js * rename config -> plugin * Update SETUP.mdx * add "runs with expo" badge to README * Revert "add "runs with expo" badge to README" This reverts commit e05a87a2354a056432af7b94060e95df37077472. * fix `withVisionCamera` path * remove unnecessary type docs
This commit is contained in:
29
src/expo-plugin/withVisionCamera.ts
Normal file
29
src/expo-plugin/withVisionCamera.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { withPlugins, AndroidConfig, ConfigPlugin, createRunOncePlugin } from '@expo/config-plugins';
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment
|
||||
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';
|
||||
|
||||
type Props = {
|
||||
cameraPermissionText?: string;
|
||||
enableMicrophonePermission?: boolean;
|
||||
microphonePermissionText?: string;
|
||||
};
|
||||
|
||||
const withCamera: ConfigPlugin<Props> = (config, props = {}) => {
|
||||
if (config.ios == null) config.ios = {};
|
||||
if (config.ios.infoPlist == null) config.ios.infoPlist = {};
|
||||
config.ios.infoPlist.NSCameraUsageDescription =
|
||||
props.cameraPermissionText ?? (config.ios.infoPlist.NSCameraUsageDescription as string | undefined) ?? CAMERA_USAGE;
|
||||
if (props.enableMicrophonePermission) {
|
||||
config.ios.infoPlist.NSMicrophoneUsageDescription =
|
||||
props.microphonePermissionText ?? (config.ios.infoPlist.NSMicrophoneUsageDescription as string | undefined) ?? MICROPHONE_USAGE;
|
||||
}
|
||||
const androidPermissions = ['android.permission.CAMERA'];
|
||||
if (props.enableMicrophonePermission) androidPermissions.push('android.permission.RECORD_AUDIO');
|
||||
|
||||
return withPlugins(config, [[AndroidConfig.Permissions.withPermissions, androidPermissions]]);
|
||||
};
|
||||
|
||||
export default createRunOncePlugin(withCamera, pkg.name, pkg.version);
|
Reference in New Issue
Block a user