fix: Throw 'frame-processor/unavailable' error instead of normal JS Error (#461)

* Throw `'frame-processor/unavailable'` error instead of normal JS Error

* Update CameraDevice.ts
This commit is contained in:
Marc Rousavy 2021-09-27 14:44:09 +02:00 committed by GitHub
parent 3d098697e9
commit 98f1961fa7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 4 deletions

View File

@ -348,7 +348,8 @@ export class Camera extends React.PureComponent<CameraProps> {
private assertFrameProcessorsEnabled(): void { private assertFrameProcessorsEnabled(): void {
// @ts-expect-error JSI functions aren't typed // @ts-expect-error JSI functions aren't typed
if (global.setFrameProcessor == null || global.unsetFrameProcessor == null) { if (global.setFrameProcessor == null || global.unsetFrameProcessor == null) {
throw new Error( throw new CameraRuntimeError(
'frame-processor/unavailable',
'Frame Processors are not enabled. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/troubleshooting', 'Frame Processors are not enabled. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/troubleshooting',
); );
} }

View File

@ -33,10 +33,9 @@ export const parsePhysicalDeviceTypes = (
const hasWide = physicalDeviceTypes.includes('wide-angle-camera'); const hasWide = physicalDeviceTypes.includes('wide-angle-camera');
const hasUltra = physicalDeviceTypes.includes('ultra-wide-angle-camera'); const hasUltra = physicalDeviceTypes.includes('ultra-wide-angle-camera');
const hasTele = physicalDeviceTypes.includes('telephoto-camera'); const hasTele = physicalDeviceTypes.includes('telephoto-camera');
if (hasTele && hasWide && hasUltra) return 'triple-camera'; if (hasTele && hasWide && hasUltra) return 'triple-camera';
if (hasWide && hasUltra) return 'dual-wide-camera'; if (hasWide && hasUltra) return 'dual-wide-camera';
if (hasWide && hasTele) return 'dual-camera'; if (hasWide && hasTele) return 'dual-camera';
throw new Error(`Invalid physical device type combination! ${physicalDeviceTypes.join(' + ')}`); throw new Error(`Invalid physical device type combination! ${physicalDeviceTypes.join(' + ')}`);

View File

@ -15,6 +15,7 @@ export type DeviceError =
| 'device/low-light-boost-not-supported' | 'device/low-light-boost-not-supported'
| 'device/focus-not-supported' | 'device/focus-not-supported'
| 'device/camera-not-available-on-simulator'; | 'device/camera-not-available-on-simulator';
export type FrameProcessorError = 'frame-processor/unavailable';
export type FormatError = export type FormatError =
| 'format/invalid-fps' | 'format/invalid-fps'
| 'format/invalid-hdr' | 'format/invalid-hdr'
@ -98,6 +99,7 @@ type CameraErrorCode =
| PermissionError | PermissionError
| ParameterError | ParameterError
| DeviceError | DeviceError
| FrameProcessorError
| FormatError | FormatError
| SessionError | SessionError
| CaptureError | CaptureError
@ -152,7 +154,7 @@ export class CameraCaptureError extends CameraError<CaptureError> {}
* See the ["Camera Errors" documentation](https://mrousavy.github.io/react-native-vision-camera/docs/guides/errors) for more information about Camera Errors. * See the ["Camera Errors" documentation](https://mrousavy.github.io/react-native-vision-camera/docs/guides/errors) for more information about Camera Errors.
*/ */
export class CameraRuntimeError extends CameraError< export class CameraRuntimeError extends CameraError<
PermissionError | ParameterError | DeviceError | FormatError | SessionError | SystemError | UnknownError PermissionError | ParameterError | DeviceError | FormatError | FrameProcessorError | SessionError | SystemError | UnknownError
> {} > {}
/** /**