Skip to content

Commit eef3161

Browse files
committed
fix: update based on review feedbacks
1 parent 2fd5066 commit eef3161

File tree

4 files changed

+9
-18
lines changed

4 files changed

+9
-18
lines changed

packages/pluggableWidgets/barcode-scanner-web/src/helpers/utils.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export type ReaderProps = {
2828
canvasMiddleRef: RefObject<HTMLDivElement>;
2929
};
3030

31-
export type UseReaderHook = (args: ReaderProps) => RefObject<HTMLVideoElement>;
31+
export type UseReaderHook = (args: ReaderProps) => { ref: RefObject<HTMLVideoElement>; useBrowserAPI: boolean };
3232

3333
export const returnVideoWidthHeight = (
3434
curVideoRef: HTMLVideoElement,

packages/pluggableWidgets/barcode-scanner-web/src/hooks/nativeReader.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ export class Reader implements MxBarcodeReader {
3333
return;
3434
}
3535

36-
const stream = await navigator.mediaDevices.getUserMedia(mediaStreamConstraints);
36+
this.stream = await navigator.mediaDevices.getUserMedia(mediaStreamConstraints);
3737

3838
this.videoRef.current.autofocus = true;
3939
this.videoRef.current.playsInline = true; // Fix error in Safari
4040
this.videoRef.current.muted = true;
4141
this.videoRef.current.autoplay = true;
42-
this.videoRef.current.srcObject = stream;
42+
this.videoRef.current.srcObject = this.stream;
4343
this.decodeInterval = setTimeout(this.decodeStream, 50, onSuccess, onError);
4444
};
4545

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
11
import { useEventCallback } from "@mendix/widget-plugin-hooks/useEventCallback";
2-
import { RefObject, useEffect, useMemo, useRef } from "react";
2+
import { useEffect, useMemo, useRef } from "react";
33
import { MxBarcodeReader } from "src/helpers/barcode-detector";
4-
import { BarcodeFormatsType } from "../../typings/BarcodeScannerProps";
54
import { isBarcodeDetectorSupported } from "../helpers/barcode-detector-utils";
5+
import { UseReaderHook } from "../helpers/utils";
66
import { Reader as NativeReader } from "./nativeReader";
77
import { Reader as ZxReader } from "./zxReader";
88

9-
type UseReaderHook = (args: {
10-
onSuccess?: (data: string) => void;
11-
onError?: (e: Error) => void;
12-
useCrop: boolean;
13-
barcodeFormats?: BarcodeFormatsType[];
14-
useAllFormats: boolean;
15-
canvasMiddleRef: RefObject<HTMLDivElement>;
16-
}) => { ref: RefObject<HTMLVideoElement>; useBrowserAPI: boolean };
17-
189
export const useReader: UseReaderHook = args => {
1910
const videoRef = useRef<HTMLVideoElement>(null);
2011
const onSuccess = useEventCallback(args.onSuccess);
@@ -23,14 +14,14 @@ export const useReader: UseReaderHook = args => {
2314

2415
const reader: MxBarcodeReader = useMemo(() => {
2516
return enableBrowserAPI ? new NativeReader(args, videoRef) : new ZxReader(args, videoRef);
26-
}, [enableBrowserAPI, args, videoRef]);
17+
// eslint-disable-next-line react-hooks/exhaustive-deps
18+
}, [enableBrowserAPI, args.barcodeFormats, args.useAllFormats, args.useCrop, videoRef]);
2719

2820
useEffect(() => {
2921
reader.start(onSuccess, onError);
3022

3123
return reader.stop;
32-
// eslint-disable-next-line react-hooks/exhaustive-deps
33-
}, []);
24+
}, [onSuccess, onError, reader]);
3425

3526
return { ref: videoRef, useBrowserAPI: enableBrowserAPI };
3627
};

packages/pluggableWidgets/barcode-scanner-web/src/hooks/zxReader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class Reader implements MxBarcodeReader {
6262
}
6363
}
6464
} finally {
65-
stop();
65+
this.stop();
6666
stream?.getVideoTracks().forEach(track => track.stop());
6767
}
6868
};

0 commit comments

Comments
 (0)