Skip to content

Commit

Permalink
[web][camera] fix getCameraTypesAsync (#7640)
Browse files Browse the repository at this point in the history
* Add support for dimensions in image picker

* Fixed getAvailableCameraTypesAsync

* revert image picker

* Update Camera.d.ts
  • Loading branch information
EvanBacon committed Apr 6, 2020
1 parent 0be684a commit 9036141
Show file tree
Hide file tree
Showing 15 changed files with 40 additions and 47 deletions.
2 changes: 1 addition & 1 deletion packages/expo-camera/build/CameraModule/CameraModule.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 11 additions & 12 deletions packages/expo-camera/build/CameraModule/CameraModule.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions packages/expo-camera/build/CameraModule/UserMediaManager.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion packages/expo-camera/build/ExponentCamera.web.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 0 additions & 4 deletions packages/expo-camera/build/ExponentCamera.web.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/expo-camera/build/ExponentCamera.web.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/expo-camera/build/ExponentCameraManager.web.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 3 additions & 4 deletions packages/expo-camera/build/ExponentCameraManager.web.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 9 additions & 6 deletions packages/expo-camera/src/CameraModule/CameraModule.ts
Expand Up @@ -5,7 +5,11 @@ import { CameraPictureOptions } from '../Camera.types';
import { CameraType, CapturedPicture, CaptureOptions, ImageType } from './CameraModule.types';
import * as Utils from './CameraUtils';
import * as CapabilityUtils from './CapabilityUtils';
import { isBackCameraAvailableAsync, isFrontCameraAvailableAsync } from './UserMediaManager';
import {
isBackCameraAvailableAsync,
isFrontCameraAvailableAsync,
canGetUserMedia,
} from './UserMediaManager';
import { FacingModeToCameraType, PictureSizes } from './constants';

export { ImageType, CameraType, CaptureOptions };
Expand Down Expand Up @@ -294,10 +298,9 @@ class CameraModule {
return PictureSizes;
};

public getAvailableCameraTypesAsync = async (): Promise<string[]> => {
if (!navigator.mediaDevices.enumerateDevices) {
return [];
}
static async getAvailableCameraTypesAsync(): Promise<string[]> {
if (!canGetUserMedia() || !navigator.mediaDevices.enumerateDevices) return [];

const devices = await navigator.mediaDevices.enumerateDevices();

const types: (string | null)[] = await Promise.all([
Expand All @@ -306,7 +309,7 @@ class CameraModule {
]);

return types.filter(Boolean) as string[];
};
}
}

function stopMediaStream(stream: MediaStream | null) {
Expand Down
8 changes: 5 additions & 3 deletions packages/expo-camera/src/CameraModule/UserMediaManager.ts
Expand Up @@ -127,7 +127,7 @@ export function canGetUserMedia(): boolean {
export async function isFrontCameraAvailableAsync(
devices?: MediaDeviceInfo[]
): Promise<null | string> {
return await supportsCameraType(['front', 'user'], 'user', devices);
return await supportsCameraType(['front', 'user', 'facetime'], 'user', devices);
}

export async function isBackCameraAvailableAsync(
Expand All @@ -148,7 +148,9 @@ async function supportsCameraType(
devices = await navigator.mediaDevices.enumerateDevices();
}
const cameras = devices.filter(t => t.kind === 'videoinput');
const [hasCamera] = cameras.filter(camera => labels.includes(camera.label.toLowerCase()));
const [hasCamera] = cameras.filter(camera =>
labels.some(label => camera.label.toLowerCase().includes(label))
);
const [isCapable] = cameras.filter(camera => {
if (!('getCapabilities' in camera)) {
return null;
Expand All @@ -162,5 +164,5 @@ async function supportsCameraType(
return capabilities.facingMode.find((_: string) => type);
});

return isCapable.deviceId || hasCamera.deviceId || null;
return isCapable?.deviceId || hasCamera?.deviceId || null;
}
5 changes: 0 additions & 5 deletions packages/expo-camera/src/ExponentCamera.web.tsx
Expand Up @@ -67,11 +67,6 @@ export default class ExponentCamera extends React.Component<CameraNativeProps> {
});
};

getAvailableCameraTypesAsync = async (): Promise<string[]> => {
const camera = this.getCamera();
return await camera.getAvailableCameraTypesAsync();
};

resumePreview = async (): Promise<void> => {
const camera = this.getCamera();
await camera.resumePreview();
Expand Down
6 changes: 3 additions & 3 deletions packages/expo-camera/src/ExponentCameraManager.web.ts
@@ -1,4 +1,5 @@
import { CameraCapturedPicture, CameraPictureOptions } from './Camera.types';
import CameraModule from './CameraModule/CameraModule';
import { canGetUserMedia } from './CameraModule/UserMediaManager';
import ExponentCamera from './ExponentCamera.web';

Expand Down Expand Up @@ -57,9 +58,8 @@ export default {
async resumePreview(camera: ExponentCamera): Promise<any> {
return await camera.resumePreview();
},
async getAvailableCameraTypesAsync(camera: ExponentCamera): Promise<string[]> {
if (!canGetUserMedia()) return [];
return await camera.getAvailableCameraTypesAsync();
async getAvailableCameraTypesAsync(): Promise<string[]> {
return await CameraModule.getAvailableCameraTypesAsync();
},
async getAvailablePictureSizes(ratio: string, camera: ExponentCamera): Promise<string[]> {
return await camera.getAvailablePictureSizes(ratio);
Expand Down

0 comments on commit 9036141

Please sign in to comment.