diff options
author | rohan09-raj <[email protected]> | 2022-08-08 13:09:01 +0530 |
---|---|---|
committer | rohan09-raj <[email protected]> | 2022-08-08 13:09:01 +0530 |
commit | 1b48cc3dc624b85b8e22e475769453e767d5a36b (patch) | |
tree | 86871e77983cf9eb8d6f66f24968afd461950039 | |
parent | 9e381861ad817106b7ae74b1976e016fd538ac0a (diff) |
integrated react webcam
-rw-r--r-- | client/package.json | 1 | ||||
-rw-r--r-- | client/src/pages/Enrollment/PhotoCapture/PhotoCapture.jsx | 46 | ||||
-rw-r--r-- | client/src/pages/Enrollment/PhotoCapture/PhotoCapture.module.css | 8 | ||||
-rw-r--r-- | 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 ( <> <Header subheading="Enrollment" /> <div className={styles.card__container}> - <CardScanner - image={`${process.env.PUBLIC_URL}/assets/images/capture.svg`} - /> + {photo === '' ? ( + <Webcam + audio={false} + height={300} + ref={webcamRef} + screenshotFormat="image/jpeg" + width={500} + videoConstraints={{ + height: 300, + width: 500, + facingMode: 'user' + }} + /> + ) : ( + <img src={photo} /> + )} </div> <Grid container columnSpacing={10} justifyContent="center"> <Grid item> @@ -20,6 +47,10 @@ const PhotoCapture = () => { size="large" type="submit" variant="contained" + onClick={(e) => { + e.preventDefault() + capture() + }} > Capture </Button> @@ -30,6 +61,10 @@ const PhotoCapture = () => { size="large" type="submit" variant="contained" + onClick={(e) => { + e.preventDefault() + setPhoto('') + }} > Reset </Button> @@ -45,6 +80,7 @@ const PhotoCapture = () => { </Typography> </Grid> </div> + <SubmitButton onClick={() => 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" |