diff --git a/src/Components/BarcodeScanner.jsx b/src/Components/BarcodeScanner.jsx index d99cf71..04ce41c 100644 --- a/src/Components/BarcodeScanner.jsx +++ b/src/Components/BarcodeScanner.jsx @@ -1,6 +1,6 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useRef } from "react"; import { Html5QrcodeScanner } from "html5-qrcode"; -import { Box } from "@mui/material"; +import { Box, Button } from "@mui/material"; import LoadingContainer from "./LoadingContainer"; const BarcodeScanner = () => { @@ -8,9 +8,10 @@ const BarcodeScanner = () => { const [isLoading, setIsLoading] = useState(false); const [barcodeInfo, setBarcodeInfo] = useState([]); const [marksData, setMarksData] = useState([]); + const scannerRef = useRef(null); // Use ref to store the scanner instance useEffect(() => { - const scanner = new Html5QrcodeScanner("reader", { + scannerRef.current = new Html5QrcodeScanner("reader", { qrbox: { width: 250, height: 250, @@ -51,26 +52,53 @@ const BarcodeScanner = () => { }; const success = (result) => { - scanner.clear(); + // scannerRef.current.clear(); + const readerEle = document.getElementById("reader"); + if (readerEle) { + readerEle.style.visibility = "hidden"; + } setScanResult(result); fetchBarcodeData(result); }; + window.success = success const error = (err) => { console.log("Error: ", err); }; - + window.error = error // Ensure the element is in the DOM before initializing the scanner if (document.getElementById("reader")) { - scanner.render(success, error); + scannerRef.current.render(success, error); } // Cleanup the scanner on component unmount return () => { - scanner.clear(); + scannerRef.current.clear(); }; }, []); + const reinitializeScanner = () => { + setScanResult(null); + setBarcodeInfo([]); + setMarksData([]); + // if (document.getElementById("reader")) { + // console.log("Reinitializing scanner..."); + // scannerRef.current.render(success, error); + // } + }; + + useEffect(() => { + if (!scanResult) { + const readerEle = document.getElementById("reader"); + console.log("Reader ELe ===== ", readerEle); + if (readerEle) { + console.log("Changing it to visible"); + readerEle.style.visibility = "visible"; + scannerRef.current.render(success, error); + } + } + }, [scanResult]); + return ( @@ -104,17 +132,31 @@ const BarcodeScanner = () => { )} - {scanResult ? (marksData.length > 0 && barcodeInfo.length > 0 ? ( - -
Marks : {marksData[0]?.marks}
-
File Scanned Date : {marksData[0]?.file_scanned_date}
-
Cover QR code : {marksData[0]?.cover_barcode}
-
- ) : ( - -
Marks Data Not Found ..
-
- )):null} + {scanResult ? ( + marksData.length > 0 && barcodeInfo.length > 0 ? ( + <> + + +
Marks : {marksData[0]?.marks}
+
File Scanned Date : {marksData[0]?.file_scanned_date}
+
Cover QR code : {marksData[0]?.cover_barcode}
+
+ + + +
+ + ) : ( + +
Marks Data Not Found ..
+
+ ) + ) : null}
{isLoading && }
diff --git a/src/Components/Home.jsx b/src/Components/Home.jsx index 6894f2d..8fefbc8 100644 --- a/src/Components/Home.jsx +++ b/src/Components/Home.jsx @@ -33,7 +33,7 @@ const Home = () => { url:"/sqlPlayground" }, { - title:"Barcode Scanner", + title:"QR Code Scanner", url:"/barcodeScanner" }, {