Skip to content

Commit 02d5717

Browse files
committed
feat: readyToStartPreview property. Can be used to defer startPreview until permission is granted
1 parent 2103141 commit 02d5717

File tree

4 files changed

+17
-3
lines changed

4 files changed

+17
-3
lines changed

src/ui-cameraview/index.android.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ export class CameraView extends CameraViewBase {
166166
startPreview() {
167167
const nativeView = this.nativeViewProtected;
168168

169-
if (nativeView) {
169+
if (this.readyToStartPreview && nativeView) {
170170
if (this.processor) {
171171
this.nativeViewProtected.setAnalyserCallback(this.processor);
172172
}

src/ui-cameraview/index.common.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,20 @@ export enum ScaleType {
2828
}
2929

3030
export abstract class CameraViewBase extends GridLayout {
31+
readyToStartPreview: boolean;
3132
static FRAME_EVENT = 'frame';
3233
flashMode = 'off';
3334
abstract toggleCamera();
3435
abstract startPreview();
3536
abstract stopPreview();
3637
abstract focusAtPoint(x, y);
3738
abstract takePicture(options: TakePictureOptions): Promise<any>;
39+
40+
// [readyToStartPreviewProperty.setNative](value: boolean) {
41+
// if (value) {
42+
// this.startPreview();
43+
// }
44+
// }
3845
}
3946
export const flashModeProperty = new Property<CameraViewBase, string | number>({
4047
name: 'flashMode',
@@ -55,6 +62,11 @@ export const saveToGalleryProperty = new Property<CameraViewBase, boolean>({
5562
defaultValue: false,
5663
valueConverter: booleanConverter
5764
});
65+
export const readyToStartPreviewProperty = new Property<CameraViewBase, boolean>({
66+
name: 'readyToStartPreview',
67+
defaultValue: true,
68+
valueConverter: booleanConverter
69+
});
5870
export const pictureSizeProperty = new Property<CameraViewBase, string | { x: number; y: number }>({
5971
name: 'pictureSize'
6072
});

src/ui-cameraview/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export function deviceHasCamera(): boolean;
1818

1919
export class CameraView extends GridLayout {
2020
autoFocus: boolean;
21+
readyToStartPreview: boolean;
2122
processor;
2223
enablePinchZoom: boolean;
2324
saveToGallery: boolean;

src/ui-cameraview/index.ios.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,12 @@ export class CameraView extends CameraViewBase {
212212
}
213213
previewStarted = false;
214214
startPreview() {
215-
if (this.previewStarted) {
215+
const nativeView = this.nativeViewProtected;
216+
if (!nativeView || this.previewStarted || !this.readyToStartPreview) {
216217
return;
217218
}
218219
this.previewStarted = true;
219-
this.nativeViewProtected?.startPreviewAndReturnError();
220+
nativeView.startPreviewAndReturnError();
220221
}
221222
stopPreview() {
222223
if (!this.previewStarted) {

0 commit comments

Comments
 (0)