From 1b48cc3dc624b85b8e22e475769453e767d5a36b Mon Sep 17 00:00:00 2001 From: rohan09-raj Date: Mon, 8 Aug 2022 13:09:01 +0530 Subject: integrated react webcam --- client/package.json | 1 + .../pages/Enrollment/PhotoCapture/PhotoCapture.jsx | 46 +++++++++++++++++++--- .../PhotoCapture/PhotoCapture.module.css | 8 ++-- client/yarn.lock | 5 +++ 4 files changed, 51 insertions(+), 9 deletions(-) diff --git a/client/package.json b/client/package.json index 324e5ab..18d0b4b 100644 --- a/client/package.json +++ b/client/package.json @@ -13,6 +13,7 @@ "react-dom": "^18.2.0", "react-router-dom": "^6.3.0", "react-scripts": "5.0.1", + "react-webcam": "^7.0.1", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.jsx b/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.jsx index 0b30848..c4960c2 100644 --- a/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.jsx +++ b/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.jsx @@ -1,17 +1,44 @@ -import React from 'react' +/* eslint-disable multiline-ternary */ +import React, { useState } from 'react' +import Webcam from 'react-webcam' +import { useNavigate } from 'react-router-dom' import Header from '../../../components/Header/Header' -import CardScanner from '../../../components/Card/CardScanner' +import SubmitButton from '../../../components/SubmitButton/SubmitButton' import styles from './PhotoCapture.module.css' import { Button, Grid, Typography } from '@mui/material' const PhotoCapture = () => { + const [photo, setPhoto] = useState() + + const navigate = useNavigate() + + const webcamRef = React.useRef(null) + + const capture = React.useCallback(() => { + const imageSrc = webcamRef.current.getScreenshot() + setPhoto(imageSrc) + }) + return ( <>
- + {photo === '' ? ( + + ) : ( + + )}
@@ -20,6 +47,10 @@ const PhotoCapture = () => { size="large" type="submit" variant="contained" + onClick={(e) => { + e.preventDefault() + capture() + }} > Capture @@ -30,6 +61,10 @@ const PhotoCapture = () => { size="large" type="submit" variant="contained" + onClick={(e) => { + e.preventDefault() + setPhoto('') + }} > Reset @@ -45,6 +80,7 @@ const PhotoCapture = () => { + navigate('/enrollment/documents')} /> ) } diff --git a/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.module.css b/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.module.css index ec59f61..a1ff9c0 100644 --- a/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.module.css +++ b/client/src/pages/Enrollment/PhotoCapture/PhotoCapture.module.css @@ -1,5 +1,5 @@ .card__container { - display: flex; - justify-content: center; - } - \ No newline at end of file + display: flex; + justify-content: center; + margin: 10px; +} diff --git a/client/yarn.lock b/client/yarn.lock index fd8ff80..3a557a6 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -7665,6 +7665,11 @@ react-transition-group@^4.4.2: loose-envify "^1.4.0" prop-types "^15.6.2" +react-webcam@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/react-webcam/-/react-webcam-7.0.1.tgz#8249e1d621eb4bba7e3f52135f562439d0528df3" + integrity sha512-8E/Eb/7ksKwn5QdLn67tOR7+TdP9BZdu6E5/DSt20v8yfW/s0VGBigE6VA7R4278mBuBUowovAB3DkCfVmSPvA== + react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" -- cgit